Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: demoniox12 en 11 Febrero 2008, 18:11 pm



Título: Buscar un texto o color en una imagen
Publicado por: demoniox12 en 11 Febrero 2008, 18:11 pm
Hola, yo lo que kisiera hacer es sakar un screen y luego ver si tiene tal color en algun lugar de la pantalla y que me de las coordenadas... aver si me pueden orientar de como hacerlo...

ej: abro una ventana que contiene el color verde en algun lugar y yo kisiera obtener las coordenadas de el lugar donde se encuentra eso...

salu2!


Título: Re: Buscar un texto o color en una imagen
Publicado por: Chefito en 13 Febrero 2008, 05:24 am
Pues una forma bastante decente y rápida puede ser esta:
Código:
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Sub Command1_Click()
Dim Ancho As Integer, alto As Integer
Ancho = ScaleX(Picture1.Width, vbTwips, vbPixels)
alto = ScaleY(Picture1.Height, vbTwips, vbPixels)
For X = 1 To Ancho
    For Y = 1 To alto
        DoEvents
        If GetPixel(Picture1.hdc, X, Y) = 4341823 Then Debug.Print X & "," & Y
    Next
Next
End Sub

Private Sub Form_Load()
Image1.Picture = LoadPicture(path de la imagen)
Picture1.Width = Image1.Width
Picture1.Height = Image1.Height
End Sub
En el loadpicture introduce el path y el nombre de la imagen. Coloca un picturebox, y dentro de éste un objeto image. También pon un boton. El número 4341823 es un color que utilize yo. Pon tu el color tipo long. Puedes ganar aun más velocidad en contra de no revisar todos los pixeles, utilizando step en los for.
Saludos.
P.D. Se me olvido comentarte que tenías que pegar el objeto image que se encuentra dentro del picture, a la parte superior izquierda, para que quede totalmente acoplado.


Título: Re: Buscar un texto o color en una imagen
Publicado por: demoniox12 en 14 Febrero 2008, 22:47 pm
muchisimas gracias muy util! una pregunta el color es en rgb?, el color que pusiste vos es un azul no? o un marronsito?

salu2!


Título: Re: Buscar un texto o color en una imagen
Publicado por: Chefito en 15 Febrero 2008, 01:56 am
Ese color es de tipo long, ya que la api getpixel devuelve el color tipo long. Si te digo la verdad, no se que color es :xD. Lo saqué de una imagen que puse de prueba con esta misma api y unas coordenadas que yo le puse :). Creo que debe ser un gris (supongo....eso miralo tu si te interesa). No es tan dificil pasar de long a rgb. El color que te di de prueba es rgb(63,64,66)=4341823. Como se sabe esto? Bueno, te lo explico por si no lo sabes. Los tres colores que representan el modo rgb (red,green,blue) van desde 0 a 255 (o sea, 256 posibilidades cada uno). Lo único que hay que hacer para pasar uno al otro es dividir o multiplicar:
para pasar (63,64,66) a long: 63+(64*256)+(66*256*256)=4341823
Y al contrario seria dividir (4341823): 4341823/(256*256)=66, resto=16447.
                                                       16447/256=64, resto=63.
Ya tienes los 3 componentes.
Saludos.