Manipulacion imagenes

Robots la parte programada en el ordenador, cibernetica, autoguiado del pc, algoritmos, recursividad
Responder
delmarote
Aprendiz de Mago
Mensajes: 37
Registrado: 10 Mar 2010, 19:08

Manipulacion imagenes

Mensaje por delmarote »

Que tal? estoy tratando de validar un captcha y se me ocurrio la siguiente solucion! pero con ff.au3 no me es posible. Pasos:
Datos de la imagen: Numeros aleatorios, siempre posicionados en el mismo lugar

1.- Guardo en mi maquina cada numero por separado para usarlos como patron de comparacion.
2.- Al validar el captcha_
2.A.- Guardo la imagen .png a mi maquina.-
2-B.- Particiono la imagen y luego la comparo con los numeros prealmacenados.
3.- Obtengo el valor.-

Mi duda es como guardo la imagen y hago todos esos calculos sin necesidad de tener mi ventana maximizada.-

Si conocen alguna funcion haganmela conocer.

Muchas gracias
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Manipulacion imagenes

Mensaje por Chefito »

delmarote escribió:Mi duda es como guardo la imagen y hago todos esos calculos sin necesidad de tener mi ventana maximizada.-
Lo tienes chungo. Por que te digo esto? Porque si lo quieres hacer así te toca meterte con GDI+ :smt024 , y eso no es cosa de novatos. Mira en la ayuda la udf que trae AutoIt. Son todas las funciones que empiezan por _GDIPlus_....... .

Yo, ahora mismo estoy viendo este tema (manejo de gráficos con esta librería desde AutoIt), y para mí que es de lo que más me cuesta programar (me resulta un tema bastante dificil).
Te va a tocar pelearte mucho con las funciones, ejemplos y demás para saber utilizar estas funciones.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Invitado

Re: Manipulacion imagenes

Mensaje por Invitado »

Muchas gracias! y bueno pelear con el codigo es la mejor forma de aprender :smt023
delmarote
Aprendiz de Mago
Mensajes: 37
Registrado: 10 Mar 2010, 19:08

Re: Manipulacion imagenes

Mensaje por delmarote »

Buenassssssssssss...... logre un gran avance :smt003 !!!!!!!!! pero como siempre tengo un problema :smt010
Necesito Cambiar esto....

Código: Seleccionar todo

$fname1=FileOpenDialog("First image","","All images(*.bmp;*.jpg;*.png;)")
If $fname1="" Then Exit
$fname2=FileOpenDialog("Second image image","","All images(*.bmp;*.jpg;*.png;)")
If $fname2="" Then Exit
$bm1 = _GDIPlus_ImageLoadFromFile($fname1)
$bm2 = _GDIPlus_ImageLoadFromFile($fname2)
Por esto....

Código: Seleccionar todo

$fname1=FileOpen("C:\Captchas\1.jpg") ; tmb probe poniendo "1.jpg"
If $fname1="" Then Exit
$fname2=FileOpen("C:\Captchas\2.jpg")
If $fname2="" Then Exit
$bm1 = _GDIPlus_ImageLoadFromFile($fname1)
$bm2 = _GDIPlus_ImageLoadFromFile($fname2)
Pero el segundo codigo no funciona y tira el siguiente error
>"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Users\xxx\Desktop\Bot\BOT 2.0\ejemplo.au3"
>Exit code: 0 Time: 9.287

La idea seria... en ves de pedir la direccion de la imagen( como el primer caso) me lo abra directamente! pero no funciona!

Muchas gracias!!!!!!!!!!

PD- con esto ya tendria la validacion del captcha... lo unico q faltaria seria, capturar una imagen del firefox... pero minimizado!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Manipulacion imagenes

Mensaje por Chefito »

Lee mejor en la ayuda los parámetros de las funciones. A este parámetro le tienes que pasar la ubicación del archivo imagen.

Código: Seleccionar todo

$bm1 = _GDIPlus_ImageLoadFromFile("C:\Captchas\1.jpg")
$bm2 = _GDIPlus_ImageLoadFromFile("C:\Captchas\2.jpg")
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
delmarote
Aprendiz de Mago
Mensajes: 37
Registrado: 10 Mar 2010, 19:08

Re: Manipulacion imagenes

Mensaje por delmarote »

Gracias por la respuesta! pense que en $fname1 ya me guardaba la direccion del archivo! Igual creo que la solucion que me propones ya la habia implementado... cuando llegue a casa lo pruebo y te confirmo!!!!! Hay alguna forma de guardar el captcha.php sin tener el firefox maximizado? Ahora obtengo el captcha haciendo un screen del captcha!

MUCHAS GRACIAS!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Manipulacion imagenes

Mensaje por Chefito »

delmarote escribió:Hay alguna forma de guardar el captcha.php sin tener el firefox maximizado?
Cogiendo la dirección de la imagen directamente del código html y descargándola.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
delmarote
Aprendiz de Mago
Mensajes: 37
Registrado: 10 Mar 2010, 19:08

Re: Manipulacion imagenes

Mensaje por delmarote »

Chefito, la imagen se llama "captcha.php" y es un png... el problema es que nose como automatizar el proceso para guardar esa imagen!

Gracias

PD: existe algun "FF-Page_Analyzer" que funcione?????
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Manipulacion imagenes

Mensaje por Chefito »

Mira la dirección url completa de la imagen y bajala con la función InetGet. Mirala en la ayuda.

Para ver la dirección completa de la imagen buscala en el código html de la página. También te puede ayudar a ver su url si en el IE colocas el cursor encima de la imagen, pulsas botón derecho del ratón y le das a propiedades.

Ya te lo he dado mascado :smt004 . Haz algo de código :smt024 y si te atascas postealo :smt023 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
delmarote
Aprendiz de Mago
Mensajes: 37
Registrado: 10 Mar 2010, 19:08

Re: Manipulacion imagenes

Mensaje por delmarote »

Muchas gracias!!!!!!!!!!!! no fue tan complicada la validacion del captcha! espero q no me cambien la imagen jejee

graciasssssssssssss

EDIT: Bueno no todo salio como esperaba... al guardar el captcha me lo guarda con otro valor :S alguna solucion??


gracias
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Manipulacion imagenes

Mensaje por Chefito »

delmarote escribió:EDIT: Bueno no todo salio como esperaba... al guardar el captcha me lo guarda con otro valor :S alguna solucion??
Que significa esto? Que el código de la imagen cambia?
Si es esto muchas veces da igual. Prueba a meterle ese código distinto a la página donde te lo has cogido a ver si te va. Muchas veces estos captchas se identifican por fórmulas y valen varios códigos.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
delmarote
Aprendiz de Mago
Mensajes: 37
Registrado: 10 Mar 2010, 19:08

Re: Manipulacion imagenes

Mensaje por delmarote »

BUeno aver... poste parte del codigo!

Código: Seleccionar todo

	$Imag = _GDIPlus_ImageLoadFromFile("C:\captcha.png")
	; Clono Imagen a comparar
	$bm1 = _GDIPlus_BitmapCloneArea($Imag, 38, 4, 47, 15)

	$bm2 = _GDIPlus_ImageLoadFromFile("C:\Captchas\1.jpg")
	MsgBox(0, "bm1==bm2", CompareBitmaps($bm1, $bm2))
	$bm2 = _GDIPlus_ImageLoadFromFile("C:\Captchas\2.jpg")
	MsgBox(0, "bm1==bm2", CompareBitmaps($bm1, $bm2))
	$bm2 = _GDIPlus_ImageLoadFromFile("C:\Captchas\3.jpg")
	MsgBox(0, "bm1==bm2", CompareBitmaps($bm1, $bm2))
	$bm2 = _GDIPlus_ImageLoadFromFile("C:\Captchas\4.jpg")
	MsgBox(0, "bm1==bm2", CompareBitmaps($bm1, $bm2))
	$bm2 = _GDIPlus_ImageLoadFromFile("C:\Captchas\5.jpg")
	MsgBox(0, "bm1==bm2", CompareBitmaps($bm1, $bm2))
	$bm2 = _GDIPlus_ImageLoadFromFile("C:\Captchas\6.jpg")
	MsgBox(0, "bm1==bm2", CompareBitmaps($bm1, $bm2))
	$bm2 = _GDIPlus_ImageLoadFromFile("C:\Captchas\7.jpg")
	MsgBox(0, "bm1==bm2", CompareBitmaps($bm1, $bm2))
	$bm2 = _GDIPlus_ImageLoadFromFile("C:\Captchas\8.jpg")
	MsgBox(0, "bm1==bm2", CompareBitmaps($bm1, $bm2))
	$bm2 = _GDIPlus_ImageLoadFromFile("C:\Captchas\9.jpg")
	MsgBox(0, "bm1==bm2", CompareBitmaps($bm1, $bm2))
Como Hago para crear direcciones dinamicas? y no tener que repetir tantas veces "C:\Captchas\9.jpg"
Otra cosa como hago para definir las coordenadas a clonar... porq la comparacion siempre me da False y las coordenadas "supongo" que son las correctas (_GDIPlus_BitmapCloneArea($Imag, 38, 4, 47, 15))


Muchas Gracias
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Manipulacion imagenes

Mensaje por BasicOs »

Aquí otro código de manejo de programas JAVA internamente desde Autoit:
http://www.autoitscript.com/forum/index ... opic=87956
Salu22:)
delmarote
Aprendiz de Mago
Mensajes: 37
Registrado: 10 Mar 2010, 19:08

Re: Manipulacion imagenes

Mensaje por delmarote »

Ufff ya paso mas de un año ajajja, bueno tengo el siguiente problema!

Supongamos que mi captcha tiene el valor "555"

Si yo uso la funcion ;InetGet("captcha.php", "c:\captcha.php.png"), me guarda la imagen pero cambia el valor del captcha por otro!, por lo cual no me sirve esta funcion porq estaria validando un valor que no corresponde.

Ahora bien si yo sobre el captcha hago boton derecho guardar imagen como, y guardo ese captcha, me mantiene el valor "555"...

Este ultimo evento es lo que no logro reproducir con autoit!
Es posible? existe otra funcion similar a la InetGet() para ver si alguna me guarda la imagen sin midificar el valor del captcha????

saludos!!!!!!!!!!!!!!!!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Manipulacion imagenes

Mensaje por Chefito »

Mira mi última constestación en este post, un poco más arriba: http://www.emesn.com/autoitforum/viewto ... 2375#p8172
No te sirvió lo que te comente? No recibí ninguna respuesta y no se si te funcionó.

Precisamente, esto mismo, también te lo comento aquí:
http://www.emesn.com/autoitforum/viewto ... cha#p10970

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
delmarote
Aprendiz de Mago
Mensajes: 37
Registrado: 10 Mar 2010, 19:08

Re: Manipulacion imagenes

Mensaje por delmarote »

Chefito! gracias por la respuesta! no funciono eso que me propones!

EDIT: voy a probar la libreria findBMP que encontre en el foro! voy a buscar el recuadro del captcha y voy a descargar la imagen! de esta forma evito descargar mal el captcha en caso de que se mueva del lugar original!
Ahora lo que hago es lo siguiente, funciona, pero si la pagina se corre 1 pixel ya deja de funcionar!

; Initialize GDI+ library
_GDIPlus_Startup()
Sleep(1000)
_ScreenCapture_SetBMPFormat(4)
_ScreenCapture_Capture ("C:\Screen.bmp")
Sleep(1000)
$Imag2 = _GDIPlus_ImageLoadFromFile("C:\Screen.bmp")
Sleep(1000)
$bm1 = _GDIPlus_BitmapCloneArea($Imag2, 576, 106, 110, 20, $GDIP_PXF32RGB)
saludos!
Responder