Frage

In einer .NET CF Anwendung, die ich schrieb, eines des Merkmals ist der Rahmen von Remote-Kameras zu erwerben. Frames werden als einzelne JPEG-Bilder und auf dem Bildschirm angezeigt erworben, wenn verfügbar.

Es war eine gute genug Lösung, aber ich weiß nicht, wie die Tatsache, dass die Zeit benötigt, um den Strom in ein Image Objekt zu konvertieren, mit dem Bitmap() Konstruktor, ist weit weit weit größer als die Zeit benötigt, um den Strom zum Download bereit.

Wenn ich einige Blogs gesurft zu diesem Thema zu suchen, fand ich, dass einige Entwickler die Image.FromStream() Verfahren wurden unter Verwendung, die eine validateImageData Flagge hat, die einige Validierungscode zu steuern scheint. Wenn validateImageData falsch ist, wird die Umwandlung dramatisch schneller.

Gut, dachte ich .... aber das Compact Framework diese Methode nicht implementieren!

Jeder weiß, wie um es zu bekommen, oder zumindest, wie ein Strom in eine Image ohne unnötige Verzögerungen zu konvertieren?

War es hilfreich?

Lösung

Nicht sicher, ob dies helfen wird, aber OpenNETCF.Drawing.Imaging hat Klassen Bilder aus Strömen zu lesen, aber sie sind IImage com Objekte gewickelt. Sie können dann IImage.Draw verwenden Sie es auf Ihren Bitmap zu zeichnen. Es hat auch eine GetThumbnail Methode, die ich verwende, um eine skalierte Bild von großen JPEG-Dateien auf dem Gerät zu erhalten.

Hier ist ein Blog-Post über das von Alex Feinman.

Andere Tipps

Wenn die Abmessungen des JPEG groß sind (wie 1200 x 1600 oder so), dann einer der Geschwindigkeit Probleme, die Sie mit dem Bitmap-Konstruktor auf dem Gerät sind mit der Größe der Bitmap ist, hat im Speicher zu erstellen ( die Bitmap würde 1200 x 1600 auch sein, auch wenn sie dann auf einem 240 x 320-Bildschirm angezeigt wird). Wenn Sie eine bereits großen JPEG von 320 x 240 statt einem vollen Glanz und Größe eines abrufen können, sollte die Bitmap-Erstellungszeit viel weniger sein.

Ich konnte keine Alternativen zu dem fehlenden FromStream anderen Verfahren als das Bitmap Konstruktor finden. Wenn Sie mit dem JPEG-Format vertraut sind, glaube ich nicht, es wäre zu schwer zu schreiben Ihrem eigenen JPEG-to-BMP-Konverter, aber ich würde vermuten, dass es nicht schneller sein würde als Bitmap ().

Edit: sorry, ich meinte, Ihr eigener gewalzte Wandler wäre nicht schneller ein 240 x 320 JPEG in einen 240 x 320 Bitmap bei der Umwandlung. Ich denke, es könnte viel schneller bei der Umwandlung von einem viel größeren JPEG in einen 240 x 320 Bitmap gemacht werden, da es zuerst den Schritt der Erstellung das Full-Size-Bitmap überspringen könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top