Was kann ich gegen zerschnittene Bilder tun?

Wenn ich versuche, Bilder aus einer PDF-Datei zu extrahieren, kommt es manchmal vor, dass ich einen Haufen von Slices des Originalbildes erhalte, die meist aus einigen wenigen Bildzeilen pro Slice oder in extremen Fällen aus nur einer Zeile bestehen. Woran liegt das und wie kann ich das gesamte Bild in einem Stück erhalten?

Es gibt verschiedene Gründe, ein Bild in Slices zu unterteilen und diese als separate Bildobjekte in einer PDF-Datei zu speichern. Ein offensichtlicher Grund könnte sein, dass die PDF-Erstellungssoftware ein bereits geschnittenes Quellbild importiert, z. B. eine TIFF-Datei mit Streifen oder Kacheln, ohne die Slices zu einem Bild zusammenzufügen. Ein weiterer häufig anzutreffender Grund ist, dass die PDF-Erstellungssoftware architektonische Grenzen hinsichtlich der Größe der Bildmusterdaten hat, z. B. eine native Windows-Anwendung, die eine PDF-Datei über einen virtuellen Druckertreiber erstellt. Und manchmal implementiert eine Grafikbibliothek, wie GDI+, maskierte Bilder, indem sie Slices für die sichtbaren Teile erstellt.

Wenn wir verstanden haben, wie Scheiben entstehen, wissen wir auch, wie wir die Teile wieder zusammensetzen können. Aber das ist sicherlich nicht einfach. So habe ich es bei einem unserer Produkte gemacht. Nennen wir es hier Bildfusion.

Der Image Merger liest den Content Stream Objekt für Objekt. Wenn es auf ein Bild stößt, wird eine leere Oberfläche und eine Bildmaske erstellt, bei der alle Bits auf "unsichtbar" gesetzt sind. Die Scheibe wird in der Oberfläche gespeichert und die entsprechenden Bits in der Maske werden auf "sichtbar" gesetzt. Handelt es sich bei dem nächsten Objekt um ein Bild, wird der Ausschnitt auf dieselbe Weise gespeichert. Dieser Vorgang wird so lange wiederholt, bis ein anderer Objekttyp gefunden wird oder es offensichtlich ist, dass das Bild kein Slice ist, z. B. wenn sich der Farbraum des Bildes ändert. Ist dies der Fall, wird das umschließende Rechteck aller Slices berechnet, das Bild in die Ausgabedatei kopiert und die Oberfläche in ihren Ausgangszustand zurückgesetzt.

Ich muss zugeben, dass dies kein sehr ausgefeilter Algorithmus ist, und ich hoffe, Sie haben einen besseren Ansatz.

Gefällt Ihnen, was Sie sehen? Teilen Sie es mit einem Freund.

Grüezi! Wie können wir helfen?

Phone