alguien sabe como puedo capturar la pantalla, mas rapido o mejor???

Iniciado por Belial & Grimoire, 3 Septiembre 2007, 02:33 AM

0 Miembros y 3 Visitantes están viendo este tema.

cobein

@ LeandroA, la verdad me da vergueza el ejemplo de prueba que subi cuando miro el tuyo heheheh.

Mira para que veas lo que te decia, en la funcion GetBitmapData "por lo menos en este monitor" me devuelve una cadena de 64010 de largo y si eso lo multiplicamos por 64 es = a mucho, por eso decia de usar el hash el hash es 16 caracteres de largo, es un paso mas pero es lo bastante rapido y me parece que vale la pena  agregarlo.

Entre los 2 me parece que vamos a sacar algo bueno, lo que yo haria:

1- agregar el MD5
2- sacar todos los 8 y ponerlos como 2 constantes para poder modificarlo mas adelante y ver que es lo mas rapido
3- deshacernos del picturebox.

bueno si queres lo hago yo si queres hacelo vos, seria mejor que nos dividamos las tareas asi no hacemos lo mismo.

Saludos
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

LeandroA

Hola,si si , tenes razón, hice una comparativa utilizando, la comprecion MD5 y es cierto es mucho mejor, prove lo siguiente,  tome ambas formas con el proyecto Compilado , y  primer proyecto sin md5 usaba 10.000 kB de memoria y con el md5 apenas 3.500, y el uso del CPU no parece cambiar en nada asi que si definitibamente esta mejor con MD5, Bueno dale vos entonces hace lo que dijiste antes sobre el picture y el md5 y despues mañana vemos que seguira

Saludos

cobein

@ LeandroA, a ver si me puedo explicar, estaba pensando esto, ahora por como estan los ejemplos de prueba en ningun momento mantenemos una copia completa de la pantalla y me parece que deberiamos hacerlo.

A ver decime que opinas, el escaneo se hace con un barrido de todos los sectores (8x8) no, ahora supongamos que estoy arrastrando una ventana, comienza el escaneo y encontramos un cambio en el cuadro (1,1) se mada o lo que sea, sigue el escaneo (2,1) encontramos otro cambio, pero que paso en el medio de esto, la ventana siguio moviendose, y entonces al enviar los dos nuevos cuadros , la nueva imagen se va a ver distorsionada.

Bueno manan seguimos me tengo que ir a dormir

Saludos.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

LeandroA

Hola si es lo que entiendo vos deicis enviar como primera toma la pantalla completa y cargar toda la matriz, y recien desde alli empezar a comparar la vuelta anterior?

Estuve biendo el tema del envio de las imagenes, me faltaria arreglar un par de cuentas matematicas.

me gustaria que vieras como pienso que podria ser la forma de enviar las imagenes, lo que como te decia antes, todavía no caigo bien como redistribuir las imagenes del otro lado, pero no es dificil solo que tengo la cabeza un poco quemanda jejej.


http://es.geocities.com/leandroascierto/Envio.zip

aca solo tome el primer cuadro, fijate que use dos extructuras tipo Heders(Cabesera)


Private Type ScreenRemote
    Width As String * 5
    Height As String * 5
    CellsNumeber As String * 3
End Type

Private Type CuadroHeders
    Size As String * 5
    CellsNumber As String * 3
    Width As String * 4
    Height As String * 4
    FileType As String * 3
End Type



El primero que envia es el ScreenRemote en donde da datos de el tamaño de la pantalla y las cantidad de celdas

en el seugndo (CuadroHeders) se envia por cada imagen y aca va la informacion en que lugar deve pintar el cuadro, el tamaño del archivo, el ancho y alto de la imagen, y fileType lo puse por las dudas que se quiera espesificar el formato osea PNG o JPG, osea es masomenos para arrancar despues lo modificamos a como sea mejor

yo use los modulos GDIPlus en mi parecer es lo mas combeniente, pero bueno lo vemos.

El server es el que recive las imagenes y el cliente el que las envia, pero nose como quieras vos sino lo hacemos a la inversa, yo lo hice asi por ahora, por comodidad

Saludos

PD: hoy ya no voy a poder hacer mas ni voy a estar, porque tengo que ir a trabajar y vuelvo como a las 6 de la mañana  asi que cualquier cosa dejame un mensage aca.

cobein

Hola, si yo estoy trabajando ahora pero cuando vuelva leo con cuidado tu mensaje y te comento, anoche segui un poco y tengo algo mejor, con respecto a como guardar las imagenes hoy voy a hacer unas pruebas porque hay mas maneras de hacerlo.

Bueno mas tarde te comento.

Saludos
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

cobein

@ LeandroA, mira puse todo junto, la parte de detectar los cabios y despues de probar con varios metodos diferentes llegue a 13 cuadros por segundo, solo para la comparacion, pero me parece que es bastante bueno, considerando que aca tengo 1280x800 y un Athlon 2800 que para esto me parece que es lo peor, mucha resolucion y poca velocidad :D, ahora voy a ver que pasa cuando trato de comprimir los cuadros. Con respecto al ejemplo que mandaste lo probe y funciona muy bien, posibemente haya que hacer algunos cambios en los headers pero por ahora para las pruevas van 10 puntos.

Bueno voy a ver que pasa al tratar de comprimir los cuadros y te subo el code.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

LeandroA

Hola Tambien una buena opcion es llevar la imagen a 16 colores (4bit)  o a 256(8 bit) quizas no se vea tan lindo pero reduce la imagen a un valor muy importante yo estuve haciendo unas pruveas con el api GetDIBits256 lo que si los ejemplos que tengo guardan la imagen, tuviera que adaptarlo para que devuelva un stdpicture, y bien luego lo guarde como png en 4bit y digamos que la comparativa fuesta

El cuadro normal guardado en .png = 4.628 bytes
El cuadro en 8bit guardado en .png = 2.224 ybytes
El cuadro en 4bit guardado en .png = 758 bytes

Creo que el cambio es interesante, despues decime como era la otra manera para guardar imagenes que me comentabas, y si ya tenes algo pasamelo

Saludos


LeandroA

#27
Otra cosa a favor que estuve viendo las imagenes .PNG suelen tener una cabesera muy grande y esta es repetitiva por lo que no seria neseario enviar todo el archivo sino que se puede oviar esta y escrivirla del otro lado osea en el server

mira

los archivos que guarde en 8bit tienen una cabesera de 887 bytes mas 12 que tienen al final tambien repetitivos e inesesarios, esto da un total de 999 bytes que ya no son  neseario mandar, osea que si este cuadro pesaba 2.224 - 999 = 1225 bytes

y en 4 bit tiene una cabesera de 167 + los 12 finales, osea un total de 179 bytes al pedo a lo que si el archivo pesaba 758 - 179 = 579 bytes

yo creo que con ese tamaño nos iramos acercando a una buena velocidad de transmicion no? a comparacion de los 37.000 bytes  que pesaba en formato .bmp cada cuadro

nhaalclkiemr

Yo uso la clase cJPEG y me funciona muy bien, incluso con calidad 100 me parece muy raro que te ocupe tanto, seguro que lo estas haciendo bien. Prueva a cambiar la calidad tambien con la funcion SampleLines pienso k se llamaba, es k hace tiempo k no uso esa clase pero me funcionaba muy bien

Saludos ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

cobein

@ LeandroA, hola estoy de vuelta, me quede sin conexión.

Bueno te cuento segui probando con diferentes funciones y reorganizando el codigo y pude aumentar la velocidad para la deteccion en casi un 30% pero ya no se me ocurre que mas hacer para mejorar eso, asi que despues mira el code y fijate a ver si ves algo mas que se pueda hacer. Tene en cuenta que cuando lo compilas la velocidad aumenta muchisimo.

Con respecto a laimagenes probe el codigo que mandaste y funiona muy rapido, lo unico qu no me termina de convencer es que no funciona en todos los sistemas y el tema de tener que gusrdar en el disco.  Tambien hice pruebas con la clase cJPEGi y la verdad no es tan rapida, pero por muy poco y algo bueno es que modifique una de las funciones de la y no hay necesidad de gurdar nada en el disco.

Mas o menos en esta maquina y con el test compilado , haciendo la comparacion de la pantalla completa y generando todas las imagenes , con PNG me da casi 3 escaneadas por seg contra el de JPEG que da casi 2,  asi que me parece que los 2 son lo bastante buenos, Hay una cosa que se me ocurrio, que es comprimir el fragmento en memoria si usar nada externo, pero no se ni cuanto tarda ni el size final, tengo que probarlo.

Bueno aca te dejo el code y voy a intentar con la compresion a ver que pasa.
http://www.filefactory.com/mupc/e3aa5a/

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.