Home » Tipps & Tricks » Grafik » Grafikbearbeitung » Thumbnails speichern

Thumbnails speichern

Will man ein Programm zur Betrachtung von Grafiken im Thumbnailformat schreiben, so steht man vor folgendem Problem: Wie sollen die Thumbnails gespeichert werden?

Denkbar wäre das Benutzen einer TImageList-Komponente. Nur ist diese leider nicht wirklich flexibel und stößt auch recht schnell an ihre Grenzen.

Ein weiterer Vorschlag wäre einfach das dynamische Generieren von TBitmaps, in denen dann die Thumbnails gespeichert werden. Geht man aber so an das Problem heran, kann man zusehen, wie die Systemressourcen in den Keller gehen.
Eine Möglichkeit, die Systemressourcen spart, will ich hier kurz vorstellen: Man kann Thumbnails in einem TMemoryStream speichern (Bitmap.SaveToStream). Möglich ist auch das Speichern von mehreren Bitmaps hintereinander. Verschiebt man die aktuelle Position des Streams (Seek) an den Beginn eines vorher gespeicherten Bitmaps, kann man auch dieses wieder problemlos laden (Bitmap.LoadFromStream).

Auch die Kapazitäten eines TMemoryStreams sind nicht endlos: Durch eine try-except-end-Konstruktion verbunden mit einem dynamischen Verwalten der verschiedenen Streams kann dem aber entgegengewirkt werden.

Zu überlegen ist nun nur noch, wie die verschiedenen Positionen, an denen sich die Thumbnails im Stream befinden, gespeichert werden. Hier ergeben sich zwei Möglichkeiten: entweder man „standarisiert“ die Thumbnails, so daß jede Grafik genau gleich groß ist, womit ein Berechnen der Anfangsposition kein Problem mehr ist, oder man speichert die Anfänge einfach separat, z.B. mithilfe von TList o.ä.