Domanda

In un'applicazione .NET CF che ho scritto, una delle caratteristiche è quella di acquisire frame da telecamere remote. I frame vengono acquisiti come immagini jpeg singole e visualizzati sullo schermo quando disponibili.

Era una soluzione abbastanza buona, ma non mi piace il tempo necessario per convertire lo stream in un oggetto Image , con Bitmap () costruttore, è molto più grande del tempo necessario per scaricare il flusso.

Quando ho navigato su alcuni blog per cercare questo problema, ho scoperto che alcuni sviluppatori stavano usando il metodo Image.FromStream () che ha un flag validateImageData che sembra controlla un codice di convalida. Quando validateImageData è falso, la conversione diventa notevolmente più veloce.

Bene, ho pensato .... ma il Compact Framework non implementa questo metodo!

Qualcuno sa come aggirarlo, o almeno come convertire uno stream in un Image senza inutili ritardi?

È stato utile?

Soluzione

Non sono sicuro se questo aiuterà, ma OpenNETCF.Drawing.Imaging ha classi per leggere immagini da stream, ma sono oggetti COM avvolti da immagini. Puoi quindi usare IImage.Draw per disegnarlo sulla tua bitmap. Ha anche un metodo GetThumbnail che utilizzo per ottenere un'immagine ridimensionata di jpeg di grandi dimensioni sul dispositivo.

Here è un post sul blog a riguardo di Alex Feinman.

Altri suggerimenti

Se le dimensioni di JPEG sono grandi (come 1200 x 1600 o qualcosa del genere), uno dei problemi di velocità che stai avendo sul tuo dispositivo con il costruttore Bitmap è che la dimensione del Bitmap deve creare in memoria ( la bitmap sarebbe anche 1200 x 1600, anche se poi fosse visualizzata su uno schermo 240 X 320). Se riesci a recuperare un JPEG già dimensionato di 320 X 240 anziché uno intero, il tempo di creazione della bitmap dovrebbe essere molto inferiore.

Non sono riuscito a trovare alternative al metodo FromStream mancante diverso dal costruttore Bitmap. Se hai familiarità con il formato JPEG, non penso che sarebbe troppo difficile scrivere il tuo convertitore da JPEG a BMP, ma immagino che non sarebbe più veloce di Bitmap ().

Modifica: scusa, intendevo dire che il tuo convertitore personalizzato non sarebbe più veloce nel convertire un JPEG 240 X 320 in un bitmap 240 X 320. Penso che potrebbe essere reso molto più veloce nel convertire un JPEG molto più grande in una bitmap 240 X 320 perché potrebbe saltare prima la fase di creazione della bitmap full-size.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top