Un pixel en Timage
Hola.
Estoy intentando obtener el código de color de un pixel en una imagen cargada con Timage. La idea que tengo es guardar x pixeles por cada imagen para saber si se ha suplantado la imagen y tambier para buscar repeticiones en una carpeta. He visto que el pixel se lee así: var i: Tcolor; i:= Image1.Picture.Bitmap.Canvas.Pixels[10,10]; ¿ pero como se maneja Tcolor ? Los pos que he encontrado no me han aclarado mucho. Gracias. |
TColor esta definido como numeros enteros de 4 bytes.
Por lo que puedes usarlo como cualquier valor entero, asignarle valores en ese rango, comparar, etc. Supongamos que tienes una imagen en cada TImage, puedes hacer:
|
Muchas gracias por la aclaración.
Pensaba que podría llevar los componentes separados rgb, brillo y otros datos. El rgb va compatado, y poco más. |
La otra opción es emplear el método Scanline(). Con éste método se consigue un acceso más rápido que con Pixels[]. El problema es que requiere un poquito más de código.
Cuando llamas a ScanLine() debes indicar la "fila" sobre la cual deseas evaluar. Luego, debes posicionarte sobre la "columna" de dicha fila. ScanLine() regresa la dirección de memoria donde comienza la j-ésima fila, por lo que se necesita un puntero para almacenar el valor, luego es posible moverse de a 3 posiciones y de este modo conseguir ir pixel a pixel. Básicamente lo que se hace es posicionarse en el pixel [i,j] en dos pasos: 1. Ir a la fila j-ésima. 2. Interar i veces, 3 lugares sobre la fila j-ésima. Lo bueno de este método es que se consigue leer los valores RGB de un pixel, y te evitas tener que estar realizando conversión de TColor a RGB. Si buscas sobre ScanLine encontrarás hilos con ejemplos de uso;). OJO: esto aplica a bitmaps. Saludos, |
Delphius Muy interesante, no lo sabía, lo usaré en otras ocasiones.
Para este caso usaré los pixel ya que no van aser más de 5 repartidos por la imagen. pero se agradece la idea. |
La franja horaria es GMT +2. Ahora son las 14:32:35. |
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