Pregunta

En una aplicación .NET CF que escribí, una de las características es adquirir marcos de cámaras remotas. Los marcos se adquieren como imágenes jpeg individuales y se muestran en la pantalla cuando están disponibles.

Era una solución lo suficientemente buena, pero no me gusta el hecho de que el tiempo necesario para convertir la transmisión en un objeto Image , con el Bitmap () constructor, es mucho, mucho, mucho más grande que el tiempo necesario para descargar la transmisión.

Cuando navegué por algunos blogs para buscar sobre este problema, descubrí que algunos desarrolladores estaban usando el método Image.FromStream () que tiene una bandera validateImageData que parece controlar algún código de validación. Cuando validateImageData es falso, la conversión se vuelve mucho más rápida.

Bien, pensé ... ¡pero Compact Framework no implementa este método!

¿Alguien sabe cómo evitarlo, o al menos cómo convertir una transmisión en una Image sin demoras innecesarias?

¿Fue útil?

Solución

No estoy seguro si esto ayudará, pero OpenNETCF.Drawing.Imaging tiene clases para leer imágenes de secuencias, pero son objetos com envueltos con IImage. Luego puede usar IImage.Draw para dibujarlo en su mapa de bits. También tiene un método GetThumbnail que utilizo para obtener una imagen a escala de grandes archivos JPEG en el dispositivo.

Aquí es un publicación de blog al respecto de Alex Feinman.

Otros consejos

Si las dimensiones del JPEG son grandes (como 1200 x 1600 o algo así), entonces uno de los problemas de velocidad que tiene en su dispositivo con el constructor de mapa de bits es el tamaño del mapa de bits que debe crear en la memoria ( el mapa de bits también sería 1200 x 1600, incluso si luego se muestra en una pantalla de 240 X 320). Si puede recuperar un archivo JPEG ya de 320 X 240 en lugar de uno de tamaño completo, el tiempo de creación del mapa de bits debería ser mucho menor.

No pude encontrar ninguna alternativa al método FromStream faltante que no sea el constructor de mapa de bits. Si está familiarizado con el formato JPEG, no creo que sea demasiado difícil escribir su propio conversor de JPEG a BMP, pero supongo que no sería más rápido que Bitmap ().

Editar: lo siento, quise decir que su convertidor propio no sería más rápido al convertir un JPEG de 240 X 320 en un mapa de bits de 240 X 320. Creo que podría hacerse mucho más rápido al convertir un JPEG mucho más grande en un mapa de bits de 240 X 320 porque podría omitir primero el paso de crear el mapa de bits de tamaño completo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top