Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-02-2009
Cecilio Cecilio is offline
Miembro
 
Registrado: ago 2007
Posts: 140
Poder: 17
Cecilio Va por buen camino
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.
__________________
Saludos Cordiales.
------------------


Última edición por Cecilio fecha: 16-02-2009 a las 14:31:43.
Responder Con Cita
  #2  
Antiguo 16-02-2009
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
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:

Código Delphi [-]
var
  color1, color2: Tcolor;
begin
  color1 := Image1.Picture.Bitmap.Canvas.Pixels[10,10];
  color2 := Image2.Picture.Bitmap.Canvas.Pixels[10,10];
  if color1 = color2 then
    ...
end;
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 16-02-2009
Cecilio Cecilio is offline
Miembro
 
Registrado: ago 2007
Posts: 140
Poder: 17
Cecilio Va por buen camino
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.
__________________
Saludos Cordiales.
------------------

Responder Con Cita
  #4  
Antiguo 16-02-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 16-02-2009
Cecilio Cecilio is offline
Miembro
 
Registrado: ago 2007
Posts: 140
Poder: 17
Cecilio Va por buen camino
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.
__________________
Saludos Cordiales.
------------------

Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Dibujar Elipse y Parábola pixel a pixel Deiv Gráficos 9 28-11-2016 10:19:41
Pintanto Pixel por Pixel - "para entendidos" MaMu Gráficos 1 09-01-2009 00:19:01
pasar imagen pixel a pixel gulder Gráficos 7 26-06-2005 02:10:45
Obtener posicion X,Y de un pixel en un TImage diegofhernando Varios 3 17-12-2003 15:03:23
¿ Cual es la mejor forma de implementar una Pizarra con Sockets? pixel a pixel ? sase Internet 1 22-10-2003 16:23:50


La franja horaria es GMT +2. Ahora son las 14:00:44.


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
Copyright 1996-2007 Club Delphi