Sehr großes JPEG-Bild schnell einlesen

09/02/2010 - 20:25 von Dominik Schmidt | Report spam
Hallo,

ich möchte sehr große Bilder (JPEG-Format) anzeigen.
Ein Bild hat beispielsweise eine Auflösung von etwa 6000 x 3500 Pixel.
Die Anzeige soll immer mit einer *deutlich* geringeren Auflösung
stattfinden.
Am liebsten hàtte ich das Bild in einer PictureBox.

Bislang habe ich das komplette Bild über LoadPicture() geladen und direkt
mit PaintPicture gestaucht, damit zumindest nach diesem Ladevorgang nicht
viel unnötiger Arbeitsspeicher verbrauchst wird:
Picture1.PaintPicture LoadPicture("C:\BILD.jpg"), 0, 0,
Picture1.ScaleWidth, Picture1.ScaleHeight

Bei großen Bildern dauert dieser Vorgang nun einerseits sehr lange. Noch
schwerwiegender ist, dass der Ladevorgang manchmal fehlschlàgt (kein
Syntaxfehler, richtige Bildadresse).

Nachdem ich auch nicht jeden einzelnen Pixel brauche, würde ich den Vorgang
gerne beschleunigen, indem ich mir ausrechne, welche Pixel tatsàchlich
benötigt werden, um anschließend nur diese aus der Bilddatei zu laden.
Das Ausrechnen ist nicht das Problem, aber ist es möglich, einzelne Pixel
aus einer JPEG-Datei auszulesen?

Gibt es eine einfachere/bessere Lösung?
 

Lesen sie die antworten

#1 Peter Fleischer
10/02/2010 - 07:49 | Warnen spam
"Dominik Schmidt" schrieb im Newsbeitrag
news:
...
Das Ausrechnen ist nicht das Problem, aber ist es möglich, einzelne Pixel
aus einer JPEG-Datei auszulesen?



Hi Dominik,
da jpeg eine komprimierte Ablage ist, bei der mehrere Pixel zusammengefasst
werden können, kannst du ohne Einlesen der Datei mit nachfolgender
Dekomprimierung nicht auf einzelne Pixel zugreifen.

Wenn du kleinere Bildauflösungen benötigst, dann lasse einen
Hintergrund-Thread ThumbNails erstellen und auf die Festplatte speichern.
Dein Programm braucht dann nur die viel kleineren ThumbNails zu nutzen.


Viele Gruesse

Peter

Ähnliche fragen