Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   pasar imagen pixel a pixel (https://www.clubdelphi.com/foros/showthread.php?t=22617)

gulder 21-06-2005 18:28:39

pasar imagen pixel a pixel
 
hola delphimaniacos mi pregunta es la siguiente:

necesito pasar una image a otra pero pixel por pixel, primero como hago para saber cuantos pixeles tiene una imagen y con el siguiente codigo probe para pasar de una a otra image pixel por pixel pero no me sirve si estoy equibocado corijanme.

Image1.Canvas.Pixels[i , j]:=Image2.Canvas.Pixels[i , j];

donde iy j son 2 varibles enteras que llevan las coordenadas de el pixel...

gracias gulder..... logula666@hotmail.com

kalisto 21-06-2005 19:16:49

copiar imagen
 
Tienes que meter la instruccion que tu has escrito dentro de un doble bucle que recorra la imagen pixel a pixel:

Código:


for j:=0 to image1.Width -1 do
  for i:= 0 to image1.height do
          image2.Canvas.Pixels[j,i]:=image1.Canvas.Pixels[j,i];

el tamaño de las dos imagenes deben de ser iguales, de todas formas este metodo es demasiado lento para imagenes de gran tamaño, si este estu caso
utiliza el metodo scanline de Tbitmap.

gulder 22-06-2005 00:39:58

perfecta la respuesta
 
esa parte me feltaba la boy a probar y para ver

de todas formas grasias:D

gulder 22-06-2005 14:42:08

Cita:

Empezado por kalisto
Tienes que meter la instruccion que tu has escrito dentro de un doble bucle que recorra la imagen pixel a pixel:

Código:


for j:=0 to image1.Width -1 do
for i:= 0 to image1.height do
        image2.Canvas.Pixels[j,i]:=image1.Canvas.Pixels[j,i];

el tamaño de las dos imagenes deben de ser iguales, de todas formas este metodo es demasiado lento para imagenes de gran tamaño, si este estu caso
utiliza el metodo scanline de Tbitmap.

kalisto probe este codigo como me dijiste pero me boto el siguiente errror

'Can only modify an image if it contains a bitmap'

no se que pasa podeis ayudarme

kalisto 22-06-2005 21:50:59

Lo que pasa que el tipo de imagen que tratas de copiar no es mapa de bits, seguramente sera un jpg.

gulder 23-06-2005 16:02:29

Cita:

Empezado por kalisto
Lo que pasa que el tipo de imagen que tratas de copiar no es mapa de bits, seguramente sera un jpg.

la verdad fue que lo probe con jpg boy a probar con lo que dices grasias

gulder 23-06-2005 16:22:41

ahora si....
 
lo probe con .bmp y si me sirvi pero es bastante lento estube buscando la propiedad scanline de los Tbitmap y no pude encontrarla de todas formas gracias de antemano (gulder vs soltan)

logula666@hotmail.com

<Sergio> 26-06-2005 02:10:45

Pongo un enlace a una página muy buena para aprender a utilizar las funciones del GDI de windows. El tutorial es para C++, pero las funciones se utilizan exactamente igual en Delphi.

Delphi simplifica muchísimo el uso del GDI con objetos como el TCanvas, Tbitmap, etc, pero si quieres optimizar tanto como sea posible (aunque usando el scanline ya haces el 95% de la optimización) tienes que usar el GDI directamente. La idea es trabajar en memoria todo lo que no se pueda hacer con el GDI por que tendrás control total sobre tus bits y sólo para mostrar en pantalla el resultado final usar el GDI.

http://www.winprog.org/tutorial/index.html


La franja horaria es GMT +2. Ahora son las 12:55:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi