Wir verwenden FFMPEG in unserer Java-Anwendung und ich versuche, eine TIFF-Datei in JPG zu konvertieren, aber die Anforderung besteht darin, die GLEICHE DPI beizubehalten wie in der ursprünglichen TIFF-Datei.
Ich bin neu bei FFMPEG und habe folgende fehlgeschlagene Versuche unternommen, dies zu erreichen:
ffmpeg -y -i test.tif test.jpg
: Erfolgreich in JPG konvertiert, aber DPI wurde von 300 auf 96 reduziert. (Überprüft durch Rechtsklick auf das Bild --> Eigenschaften --> Registerkarte Details --> horizontale und vertikale Auflösungsattribute)ffmpeg -y -i test.tif -c:v copy test.jpg
: Konvertiert in JPG mit 300 dpi, aber das eigentliche Dateiformat ist immer noch TIF. Es scheint, als ob nur die Erweiterung in JPG geändert wurde.ffmpeg -y -i test.tif -pix_fmt <format> test.gif
(alle 3 unterstützten Formate ausprobiert: yuvj420p, yuvj422p und yuvj444p): In JPG konvertiert, aber dpi von 300 auf 96 geändert.ffmpeg y -i test.tif -r 1 -q:v <range> test.jpg
(verschiedene Bereiche ausprobiert: 1 bis 10): Gleiches Problem.-q:v
Habe es mit allen Optionen versucht-qscale
, aber es ändert nur die Breite und Höhe des Bildes.
Schließlich habe ich von ImageMagick gehört und das Problem ließ sich im ersten Versuch mit dem folgenden Befehl lösen:
magick convert "test.tif" "test.jpg"
: in JPG konvertiert und dpi ist 300.
Ist es möglich, dasselbe mit FFMPEG zu erreichen? Wenn ja, helfen Sie mir bitte, da ich hier schon seit langem feststecke.
Antwort1
Man muss sich darüber im Klaren sein, dass DPI nichts mit den Daten in einem Bild zu tun hat. Es ist ein Konstrukt, das auf den Ausgabemöglichkeiten der Hardware basiert. Ein Bild hat eine bestimmte Anzahl einzelner Pixel, für die in der Datei Daten vorhanden sind. Die Angabe, wie viele Pixel in einen Zoll passen, ist nur bei der Ausgabe auf einem Drucker oder einem Display auf einem Gerät von Bedeutung. Die Bilddaten selbst haben keine inhärente „Größe“ von Pixeln. Einige Bilddateiformate unterstützen Metadaten, die „DPI“ enthalten können, aber für das Bild selbst ist dies im Wesentlichen bedeutungslos.
Die angezeigten DPI-Informationen können von den Programmen, die Sie zum Anzeigen der Bilddateien verwenden, beliebig zugewiesen werden. Wenn Ihr Malprogramm angibt, dass das Bild 300 DPI hat, hat das möglicherweise nichts mit den Daten in der Datei zu tun, die möglicherweise kein DPI-Tag haben. TIFF-Dateien können Metadaten-Tags wie DPI enthalten (deshalb heißt das Format „Tagged Image File Format“), aber für die Bilddaten spielt das keine Rolle.
Diese Konzepte scheinen für viele Leute besonders schwer zu verstehen zu sein, aber Tatsache ist, dass ein Bildelement (Pixel) keine Größe hat – nur Ausgabegeräte haben DPI-Messungen. Ich vermute, Ihre Anforderung, die DPI nicht zu ändern, ist jemandes Vorstellung von einer Anforderung, Daten zu erhalten. Übrigens, da JPEG ein verlustbehaftetes Komprimierungsschema ist, ist der Grad der Komprimierung, den Sie anwenden, viel wichtiger als irgendwelche willkürlichen DPI-Metadaten. Sie könnten diese Bilder zerstören, wenn Sie sie im JPEG-Format komprimieren und dabei die DPI-Bezeichnung beibehalten.