Ich suche nach einer Möglichkeit, die DPI in PNG-Bilddateien zu ändern. Mit ImageMagick ist dies ganz einfach:
$ convert -density 150 -units pixelsperinch file.png file.png
Das Problem ist, dass ich diesen Befehl von meiner Anwendung aus ausführen werde, die auf mehreren VMs ausgeführt wird, auf denen ImageMagick nicht installiert ist. Ich kann die Upgrade-Pakete auf diese VMs übertragen, aber im Fall von ImageMagick würde dies einem Upgrade-Bundle etwa 30 MB hinzufügen, was für meinen Anwendungsfall etwas zu viel ist.
Lange Rede, kurzer Sinn : Gibt es eine Möglichkeit, die DPI in einer PNG-Datei mit einem kleinen Befehlszeilentool (wie in der Paketgröße) zu ändern?
Optional wäre es auch in Ordnung, Bytes in einer Rohbilddatei zu ändern, wenn jemand weiß, wo er nach ihnen suchen muss ...
pHYs
Block aus einem in Photoshop erstellten PNG.Antworten:
Ist 2,10 MB klein genug? Wenn ja, verwenden Sie NConvert und einen Batch-Befehl wie:
Wofür ist NConvert?
XnView ist eine GUI-basierte Anwendung, mit der Sie Bilder über eine grafische Benutzeroberfläche ändern und bearbeiten können. NConvert verfügt über ungefähr die gleichen Funktionen wie XnView, ist jedoch ein Befehlszeilenprogramm und verfügt über keine grafische Benutzeroberfläche. Sie können NConvert in Batch-Skripten verwenden oder eine andere Anwendung kann es aufrufen.
Hilfreiche Links
quelle
Sie haben erwähnt, dass Sie diesen Befehl "von Ihrer Anwendung aus" ausführen würden, und dies lässt mich glauben, dass Sie diese Anwendung geschrieben haben oder sie warten. Es gibt jedoch ImageMagick-APIs für mehrere Sprachen, und Sie können eine davon verwenden, um die Funktionalität direkt in Ihr vorhandenes Programm aufzunehmen. Die Erhöhung der Paketgröße hängt davon ab, in welcher Sprache Ihre Anwendung geschrieben ist und ob Sie die Bibliothek statisch oder dynamisch verknüpfen. Ich würde mir jedoch vorstellen, dass sie erheblich kleiner als 30 MB ist.
Eine andere Option besteht darin, nicht das gesamte ImageMagick-Paket einzuschließen. Sie können die ImageMagick Zip-Datei (nur 13 MB BTW) herunterladen , nur das
convert
Tool und seine Abhängigkeiten extrahieren und diese auf Ihre VMs verteilen. Es gibt ein Tool namens Dependency Walker , mit dem Sie die Abhängigkeiten desconvert
Tools bestimmen können .quelle
Verwenden Sie die
-size
Fahne im netpbm pnmtopng Programm. Die verwendeten Einheiten sind Pixel pro Meter. Im folgenden Beispiel wird newfile.png auf 300 dpi gesetzt.quelle
Nun, Sie könnten möglicherweise ein Python-Skript verwenden.
Quelle .
quelle
Die richtige "Konvertierungs" -Befehlszeile für Image Magick wäre die Verwendung des Arguments -resample:
quelle