Página 1 de 1

Manipulacion imagenes

Publicado: 24 Abr 2010, 21:26
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

Re: Manipulacion imagenes

Publicado: 24 Abr 2010, 22:47
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.

Re: Manipulacion imagenes

Publicado: 25 Abr 2010, 00:55
por Invitado
Muchas gracias! y bueno pelear con el codigo es la mejor forma de aprender :smt023

Re: Manipulacion imagenes

Publicado: 26 Abr 2010, 02:41
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!

Re: Manipulacion imagenes

Publicado: 26 Abr 2010, 08:46
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.

Re: Manipulacion imagenes

Publicado: 26 Abr 2010, 14:26
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!

Re: Manipulacion imagenes

Publicado: 26 Abr 2010, 16:13
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.

Re: Manipulacion imagenes

Publicado: 26 Abr 2010, 21:14
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?????

Re: Manipulacion imagenes

Publicado: 26 Abr 2010, 22:06
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.

Re: Manipulacion imagenes

Publicado: 27 Abr 2010, 00:22
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

Re: Manipulacion imagenes

Publicado: 27 Abr 2010, 08:22
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.

Re: Manipulacion imagenes

Publicado: 27 Abr 2010, 20:23
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

Re: Manipulacion imagenes

Publicado: 10 Oct 2010, 12:59
por BasicOs
Aquí otro código de manejo de programas JAVA internamente desde Autoit:
http://www.autoitscript.com/forum/index ... opic=87956
Salu22:)

Re: Manipulacion imagenes

Publicado: 19 Nov 2011, 05:00
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!!!!!!!!!!!!!!!!

Re: Manipulacion imagenes

Publicado: 19 Nov 2011, 14:54
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.

Re: Manipulacion imagenes

Publicado: 19 Nov 2011, 18:51
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!