Konvertierungstools für den Waveshare Photopainter

Zwei Programme, ein Gerüst – HEICtoJPEG und der E-Ink Bulk Converter

Eigentlich sollte es nur ein Werkzeug werden. Für den Waveshare PhotoPainter hatte ich mir ja bereits ein kleines Python-Programm gebaut, das Bilder mit der richtigen Farbpalette in Bitmaps für den Rahmen verwandelt – Kontrast rauf, Sättigung rauf, Floyd-Steinberg-Dithering drüber, fertig ist das E-Ink-taugliche Bild. Aus „kleinem Hilfsprogramm“ wurde dabei relativ schnell eine Anwendung mit Drag & Drop, Einstellungen für Ausrichtung und Größenanpassung und einer Oberfläche, die nicht mehr aussieht wie ein Uralt-Tool aus dem letzten Jahrtausend.

Das Problem mit HEIC

Wer mit einem iPhone fotografiert, kennt das Format HEIC. Effizient, platzsparend, technisch durchaus sinnvoll – und für ImageMagick sowie meinen Bulk Converter erstmal komplettes Kauderwelsch. Ich konnte die Bilder also nicht einfach vom Handy holen und direkt in mein eigenes Programm ziehen, sondern musste sie vorher umständlich exportieren oder umwandeln. Genau die Art von Extra-Schritt, die mich auf Dauer nervt, weil sie sich bei jedem einzelnen Bild wiederholt.

Die Lösung war naheliegend: noch ein kleines Programm. Diesmal eins, das nichts anderes tut, als HEIC-Dateien per Drag & Drop entgegenzunehmen, sie in JPEG umzuwandeln und dabei optional gleich die Größe anzupassen – mit Voreinstellungen für 4K, Full HD oder eben einer freien Wunschgröße. Damit landen die iPhone-Fotos wieder in einem Format, mit dem der Rest meiner Werkzeugkette etwas anfangen kann.

Warum beide Programme gleich aussehen

Das eigentlich Praktische an der Sache: Ich musste die Oberfläche nur einmal bauen. Beide Programme nutzen das gleiche Grundgerüst – tkinterdnd2 für Drag & Drop, ttkbootstrap für ein Erscheinungsbild, das nicht sofort nach Tkinter aus den späten Neunzigern schreit, dazu eine Dateiliste, einen Optionsbereich und eine Fortschrittsanzeige. Statt mir für jedes kleine Tool eine neue Oberfläche auszudenken, konnte ich das bewährte Muster einfach übernehmen und mit den jeweils passenden Optionen füllen.

Ganz reibungslos lief das allerdings nicht. Wer tkinterdnd2 und ttkbootstrap kombinieren möchte, sollte tunlichst nicht auf die Idee kommen, beide Fensterklassen per Mehrfachvererbung zusammenzumischen – dann geht nämlich das intern geladene tkdnd-Package verloren und man landet mit einer hübschen TclError im Traceback. Der sauberere Weg ist, ganz stur bei TkinterDnD.Tk() als Hauptfenster zu bleiben und ttkbootstrap nur als Style obendrauf zu setzen. Klingt nach einer Kleinigkeit, hat mich aber trotzdem kurz stutzen lassen, bevor der Groschen gefallen ist.

HEICtoJPEG

Das kleinere der beiden Programme ist bewusst schlicht gehalten: HEIC-Dateien reinziehen, optional eine Zielgröße wählen – Original, ein paar gängige Presets oder freie Werte mit oder ohne beibehaltenem Seitenverhältnis –, JPEG-Qualität einstellen, fertig. Kein Schnickschnack, keine zusätzlichen Optionen, die ich sowieso nie benutze. Genau das richtige Werkzeug für ein Problem, das eigentlich nur einen einzigen Handgriff lösen soll. Edit aus der Zukunft: Mittlerweise hilft es auch die Bilder für diesen Blog vorzubereiten.

Der E-Ink Bulk Converter

Aus dem ursprünglichen Prototyp ist inzwischen der Bitmap Master geworden – mit Optionen für Größenanpassung (einpassen, ausfüllen oder stur dehnen), Ausrichtung, einem Filterprofil für optimierten Kontrast und natürlich der automatischen Verarbeitung über die passende palette.png. Statt einzelner Bilder wandert hier gleich der ganze Stapel durch, inklusive Log-Ausgabe, damit ich sehe, welches Bild geklappt hat und welches nicht.

Alles in einer Datei

Beide Programme packe ich am Ende zu einer einzigen ausführbaren Datei. Das ist eine reine Gewohnheitssache von macOS her, wo man Programme klassischerweise auch einfach als ein Paket bekommt: drauf doppelklicken, benutzen, bei Bedarf wieder löschen – fertig, ohne dass irgendwo Reste liegen bleiben oder eine Installationsroutine über den Rechner herfällt. Genau dieses Gefühl wollte ich auch unter Windows haben, ohne dass beim Start plötzlich eine Python-Bibliothek fehlt.

Der offensichtliche Nachteil ist die Dateigröße – so ein Paket bringt eben seinen kompletten Python-Unterbau gleich mit. Bei den heutigen Speicherplatzgrößen ist das für mich aber eher eine Randnotiz als ein echtes Problem.

Was ihr braucht

Der E-Ink Bulk Converter ist ohne zwei externe Zutaten aufgeschmissen: ImageMagick muss installiert sein, weil das Programm die ganze Bildverarbeitung darüber abwickelt und ohne die passende Farbpalette (palette.png) fehlt ihm schlicht die Grundlage fürs Dithering. Die Palette biete ich hier zum Download an, ImageMagick müsst ihr euch separat installieren.

Getestet ist das Programm mit ImageMagick-7.1.2-29-Q16-HDRI. Mit anderen Versionen kann es funktionieren, muss es aber nicht – falls bei euch also seltsame Fehler auftauchen, lohnt sich zuerst ein Blick auf die installierte ImageMagick-Version.

Fazit

Am Ende sind aus einem eigentlich einfachen Bedürfnis – Bilder für einen E-Paper-Rahmen aufbereiten – zwei kleine, aber ordentlich aufgeräumte Programme geworden, die sich dieselbe Optik teilen und sich ganz gut ergänzen. Kein Meisterwerk der Softwarearchitektur, aber genau die Art von Werkzeug, die ich mir wünsche: unkompliziert, für den eigenen Alltag gebaut und ohne dass ich beim nächsten Mal wieder von vorne anfangen muss.

Downloads

HEIC to JPEG

HEIC-Bilder schnell und unkompliziert in das JPEG-Format umwandeln. Einfach Bilder per Drag & Drop ins Programm ziehen und die Konvertierung starten – ohne komplizierte Einstellungen. Perfekt vorbereitet für den Fotoumwandler.

Fotoumwandler für Waveshare Photopainter
Palette.png für den Converter

☕ Hat dir dieser Beitrag geholfen?
Ich stecke viel Herzblut und Zeit in diesen Blog. Wenn du mir danke sagen möchtest, kannst du mir hier einen virtuellen Kaffee spendieren: buymeacoffee oder Ko-fi. Vielen Dank für deine Unterstützung!

Von Tobi

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert