Question

Dans une application .NET CF que j’ai écrite, l’une des fonctionnalités consiste à acquérir des images à partir de caméras distantes. Les images sont acquises sous la forme d’images jpeg uniques et affichées à l’écran si elles sont disponibles.

C'était une bonne solution, mais je n'aime pas le fait que le temps nécessaire pour convertir le flux en objet Image , avec le Bitmap () constructeur, est beaucoup plus long que le temps nécessaire au téléchargement du flux.

Lorsque j'ai parcouru quelques blogs à la recherche de ce problème, j'ai constaté que certains développeurs utilisaient la méthode Image.FromStream () qui comporte un indicateur validateImageData qui semble contrôler un code de validation. Lorsque validateImageData est défini sur false, la conversion est considérablement plus rapide.

Bien, j'ai pensé .... mais le Compact Framework n'implémente pas cette méthode!

Tout le monde sait comment le contourner, ou au moins comment convertir un flux en une image sans délais inutiles?

Était-ce utile?

La solution

Je ne sais pas si cela aidera, mais OpenNETCF.Drawing.Imaging a des classes pour lire les images à partir de flux, mais ce sont des objets com enveloppés par IImage. Vous pouvez ensuite utiliser IImage.Draw pour le dessiner sur votre bitmap. Il utilise également une méthode GetThumbnail que j’utilise pour obtenir une image mise à l’échelle des fichiers jpeg volumineux sur le périphérique.

Voici un article de blog de Alex Feinman à ce sujet.

Autres conseils

Si les dimensions du fichier JPEG sont grandes (par exemple, 1200 x 1600 ou quelque chose du genre), l’un des problèmes de vitesse que vous rencontrez sur votre appareil avec le constructeur Bitmap est la taille du bitmap qui doit être créée en mémoire ( le bitmap serait également de 1200 x 1600, même s'il est ensuite affiché sur un écran de 240 X 320). Si vous pouvez récupérer un fichier JPEG déjà dimensionné de 320 X 240 au lieu d'un fichier en taille réelle, le temps de création du bitmap devrait être beaucoup plus court.

Je n'ai trouvé aucune alternative à la méthode FromStream manquante, à part le constructeur Bitmap. Si vous connaissez le format JPEG, je ne pense pas qu'il serait trop difficile d'écrire votre propre convertisseur JPEG-BMP, mais je suppose qu'il ne serait pas plus rapide que Bitmap ().

Edit: désolé, je voulais dire que votre propre convertisseur roulé ne serait pas plus rapide pour convertir un fichier JPEG 240 X 320 en un fichier bitmap 240 X 320. Je pense que la conversion d'un fichier JPEG beaucoup plus volumineux en un fichier bitmap de 240 X 320 pourrait être beaucoup plus rapide, car elle pourrait commencer par l'étape de création du fichier bitmap en taille réelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top