Autor
|
Tema: Pregunta para Super Guru o tal vez no (Leído 3,787 veces)
|
sch3m4
Ex-Staff
Desconectado
Mensajes: 1.608
Nihil est in intelectu quod prius not fuerit insen
|
si lo que quieres es hacer un programa para ver la pantalla remota en tiempo real, no se hace así. Tienes que hacer una primera captura, alojarla en el pc remoto y enviarla al cliente, y periodicamente guardar en el servidor otra captura de pantalla, y contrastar los dos archivos en busca de bytes diferentes, en lo que realmente es la imagen, y enviarle esos bytes al cliente, junto con la posición en la que deberían estar.
|
|
|
En línea
|
SafetyBits
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
|
|
|
Timerlux
Desconectado
Mensajes: 89
EmmHHHHHH !!!
|
Si señor ,no se me habia ocurrido, asi los datos por cada fotograma a enviar son muchisimo menores. Lympex me puedes decir de donde sabes tu eso, conoces algun Link, Manual, Codigo o algo. Me gustaria saber como de forma simple y limpia, Comparando 2 Byte Array, le mando informacion al cliente de los "Bytes Cambiados" y la "Posicion", a primera vista se me ocurre un Array de 2 dimensiones, pero eso ya no me gusta y se me podria complicar el tema . Gracias Lympex 
|
|
|
En línea
|
|
|
|
Hendrix
|
Eso de tansmitir datos por comparación es lo ideal...pero esto no sirve para fotogramas capturados de la web cam, pues habrá muy pocos pixels que coincidan.
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
Timerlux
Desconectado
Mensajes: 89
EmmHHHHHH !!!
|
Hendrix se puede hacer de forma cutre, si cojes el array de bytes del bitmap con 4 bits (16 colores) u 8 (256) bits de definicion ,si te coinciden muchisimos pixel pero pierdes mucha calidad.
Con "color real" 24 , 32 bits el minimo e inapreciable cabio de luz , cambia todos los pixels, nigun fotograma es igual al anterior aunque lo parezca, te lo digo por experiencia
|
|
|
En línea
|
|
|
|
Hendrix
|
Ya lo se, por eso te digo que con webcam no funciona eso... 
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
sch3m4
Ex-Staff
Desconectado
Mensajes: 1.608
Nihil est in intelectu quod prius not fuerit insen
|
para la webcam también serviría, lo que ocurre es que no puedes hacer la comparación literalmente, tendrías que cojer grupos de bytes, y mirar el porcentaje de bytes que son iguales/diferentes, y ajustarlo a tu gusto. Timerlux, lo sé porque no eres el primero ni el último que necesita optimizar código  No es algo muy complejo, pero debes tener en cuenta, que no puedes comparar el archivo completo, debes empezar a comparar después de la cabecera y el pie del archivo. Mirate la estructura del archivo de imagen que guardas, mira cuánto ocupa la cabecera, etc. Y evalúa el resto del archivo. Después unicamente cojes el byte que quieras enviar, y lo envías junto con la posición en la que se encuentra en tu archivo, pero asegurate, de que el tipo del fichero es igual en el cliente que en el servidor.
|
|
|
En línea
|
SafetyBits
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
|
|
|
Timerlux
Desconectado
Mensajes: 89
EmmHHHHHH !!!
|
La historia es que yo no uso ningun archivo, me ahorro ese paso. Ni si quiera uso una Picturebox en el servidor para contener la imagen capturada, en su lugar uso las APIS "CreateCompatibleDC", "CreateCompatibleBitmap". No obtengo el "Byte Array" de un archivo previamente guardado, lo obtengo directamente de la imagen capturada. El dilema ahora es que para usar el metodo de comparar cambios en imagenes , necesito comparar diferencias entre 2 "Byte arrays" y me tarda mucho Milisegundos entre (100 y 400), parece mentira pero puede que me no compense hacer comparaciones, si bien en la velocidad de transmision de datos ganare mucho, en el procesamiento de la imagenes perdere mucho, necesito encontrar un codigo rapido que haga las comparaciones arrays y me de otro array con los cambios, ahora estoy con eso solo he encontrado un codigo que me puede resolver la papeleta pero tengo que depurarlo y entenderlo muy bien. Saludos
|
|
|
En línea
|
|
|
|
Timerlux
Desconectado
Mensajes: 89
EmmHHHHHH !!!
|
Después unicamente cojes el byte que quieras enviar, y lo envías junto con la posición en la que se encuentra en tu archivo Esa es otra cosa que todavía no se como sera la mejor manera de Hacerlo - Un array de 2 dimensiones? Cambios(posicion, byte) que tal se llevan los arrays de 2 dimensiones con Winsock? - Un array de string Cambios("23#45") Teniendo en cuenta que la mi prioridad es la rapidez, no se que hacer 
|
|
|
En línea
|
|
|
|
sch3m4
Ex-Staff
Desconectado
Mensajes: 1.608
Nihil est in intelectu quod prius not fuerit insen
|
no te digo que uses picture box, realmente en este caso te sirve para poco en el lado del servidor, lo que te digo, es que guardes la primera captura, y esa la envias completa, y la visualizas en el cliente.
Luego, puedes usar un timer, e ir realizando capturas y guardandolas en otro archivo, y comparas ese nuevo archivo con el anterior, y envías las diferencias. Después de hacer esto, reemplazas el archivo antiguo, por el nuevo, y vuelves a realizar la captura y guardarla.
Yo usaría una string.
|
|
|
En línea
|
SafetyBits
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
|
|
|
|
|