In GIMP gibt es eine sehr einfache Möglichkeit, das zu tun, was ich will. Ich habe nur den deutschen Dialog installiert, aber ich werde versuchen, ihn zu übersetzen. Ich spreche über zu gehen Picture -> PrintingSize
und dann die Werte eingestellt X-Resolution
und Y-Resolution
die als so genannte DPI - Werte mir bekannt sind. Sie können auch das Standardformat auswählen Pixel/Inch
. (Auf deutsch ist der Dialog Bild -> Druckgröße
und da X-Auflösung
und Y-Auflösung
)
Ok, die Werte dort sind oft 72
voreingestellt. Wenn ich sie in z. B. ändere, 300
hat dies zur Folge, dass das Bild auf dem Computer gleich bleibt, aber wenn ich es drucke, wird es kleiner, wenn Sie es betrachten, aber alle Details sind noch vorhanden, nur kleiner -> es hat eine höhere Auflösung auf dem gedruckten Papier (aber kleiner ... das ist in Ordnung für mich).
Ich mache das oft, wenn ich mit LaTeX arbeite, oder um genau zu sein, mit dem Befehl pdflatex
auf einer aktuellen Ubuntu-Maschine. Wenn ich den obigen Vorgang mit GIMP manuell durchführe, funktioniert alles einwandfrei. Die Bilder erscheinen im resultierenden PDF kleiner, aber mit hoher Druckqualität.
Was ich versuche zu tun, ist, den Prozess zu automatisieren, in GIMP zu gehen und die DPI-Werte anzupassen. Da ImageMagick bekanntermaßen hervorragend ist und ich es für viele andere Aufgaben verwendete, versuchte ich, mein Ziel mit diesem Tool zu erreichen. Aber es macht einfach nicht was ich will.
Nachdem ich viele Dinge ausprobiert habe, denke ich, dass dies tatsächlich der Befehl ist, der mein Freund sein sollte:
convert input.png -density 300 output.png
Dies sollte die DPI auf 300 setzen, da ich überall im Web lesen kann. Es scheint zu funktionieren. Aber wenn ich die Datei überprüfe, bleibt sie gleich (BEARBEITEN: das ist, was ich erwarte, wie oben erklärt).
file input.png output.png
input.png: PNG image data, 611 x 453, 8-bit grayscale, non-interlaced
output.png: PNG image data, 611 x 453, 8-bit grayscale, non-interlaced
Wenn ich diesen Befehl verwende, hat er anscheinend das getan, was ich wollte:
identify -verbose output.png | grep 300
Resolution: 300x300
PNG:pHYs : x_res=300, y_res=300, units=0
Komischerweise kommt derselbe Ausgang für input.png
den ich verwirrt bin ... also sind dies möglicherweise die falschen Parameter, die ich beobachten muss?
Aber wenn ich jetzt mein TeX mit pdflatex
dem Bild rendere, ist es immer noch groß und verschwommen. Auch wenn ich das Bild mit GIMP wieder öffne, werden die DPI-Werte auf 72
anstatt gesetzt 300
. Es gab also überhaupt keine Wirkung.
Was ist hier das Problem? Verstehe ich etwas völlig falsch? Ich kann nicht so falsch liegen, da mit GIMP alles in Ordnung ist.
Vielen Dank für jede Hilfe. Ich bin auch offen für andere automatisierte Lösungen, die auf einem Linux-System leicht zu realisieren sind.
quelle
^
Symbol links von seiner Antwort), und sie nicht nur zu "akzeptieren", sobald Sie genug persönlichen Ruf haben (ich denke, Sie brauchen ihn) +15) ...Antworten:
Angabe der Einheiten - Ich kann mich an ein Problem erinnern, als ich diese Option weggelassen habe (obwohl DPI die Standardeinstellung sein sollte), zum Beispiel:
Wissen Sie, welche eingebetteten Datenfelder GIMP zum Lesen der Auflösung verwendet? Hat es eigene Felder, die die von ImageMagick verwendeten Standardfelder außer Kraft setzen? Zum Beispiel Photoshop verwendet
Photoshop:XResolution
undPhotoshop:YResolution
so müssen Sie diese Set für Photoshop eine Dichteeinstellung (ImageMagick nicht tun kann dies - wir verwenden ExifTool) zu erkennen.quelle
-density 300
vorher setzeninput.png
. Ich habe PDFs konvertiert. Danke trotzdem.-set units PixelsPerInch -density 300
einfach verwenden , es-units
funktionierte nicht, unabhängig von der Reihenfolge der Optionen.Beachten Sie, dass Sie mit Exiftool Auflösungen auslesen können. Zum Beispiel
Exiftool '-*resolution*' c.jpg
könnte zeigenAuflösungseinheit: Zoll X Auflösung: 300 Y Auflösung: 300
Exiftool kann auch Parameter festlegen, aber wie in der Manpage angegeben
Image::ExifTool::TagNames
, können die zusätzlichen Tags XResolution und YResolution nicht von Exiftool geschrieben werden.Ich weiß nicht, ob ImageMagick über Optionen zum Ändern der Auflösung verfügt, würde mich aber wundern, wenn dies nicht der Fall ist. Es ist auch einfach, GIMP-Skripte zu schreiben, um Aufgaben wie diese zu automatisieren, und es ist auch möglich, Auflösungen mit kleinen Programmen zu ändern. Es folgt beispielsweise ein C-Programm (über
gcc setRes.c -O3 -Wall -o setRes
das kompiliert werden kann ), das die ersten Bytes einer JPEG-Datei liest, die Auflösung in 300 ändert und sie neu schreibt. Das gezeigte Programm verwendet Konstanten für Little-Endian-Maschinen wie x86. Wenn auf einer Big-Endian - Maschine laufen soll es mit einer Meldung beenden , wieError: xyz may be not a .jpg file
, auch wenn xyz ist eine JPEG - Datei. Beachten Sie, dass ich die resultierenden Bilder nicht über getestet habepdflatex
. es würde sich wahrscheinlich lohnen, eine frage in die tex se zu stellen .quelle
Ich konnte nicht herausfinden, wie ich die Konvertierung davon überzeugen kann , nur die Metadaten hinzuzufügen und meine [monochrome] Bitmap nicht neu zu kodieren. Die Datei wurde um mehr als 50% erweitert.
Ich habe festgestellt, dass pngcrush (kein ImageMagick-Tool) auch die Dichtemetadaten hinzufügen kann. Diese Befehlszeile markiert es mit 600 dpi und ermöglicht andere Optimierungen, durch die die Dateigröße um ~ 10% reduziert wurde:
quelle
"Ich möchte DPI mit Imagemagick ändern, ohne die tatsächliche Bytegröße der Bilddaten zu ändern."
Das ist völlig unmöglich!
Weil:
Sie scheinen auch nicht zu verstehen, was DPI in Wirklichkeit ist:
72dpi
.288dpi
.288dpi
auf einem 1-Zoll-Quadrat "drucken" , ist es nicht mehr dasselbe Bild: Es wurde durch den Druckertreiber oder einen anderen Filtermechanismus extrapoliert und ist stattdessen ein 288 x 288 Pixel großes Bild ein 72x72 Pixel großes Bild ... )Wenn Sie das Originalbild mit 72 x 72 Pixeln als 1 Zoll breites Quadrat drucken möchten, aber um
288dpi
, müssen Sie das Bild neu skalieren (in diesem Fall vergrößern). Für jedes Pixel im Original benötigen Sie 4 Pixel des neuen, hochskalierten Bildes. Nun gibt es verschiedene Algorithmen, mit denen berechnet werden kann, welche Farbwerte diese 4 Pixel (3 davon neue Pixel) haben sollten:In jedem Fall erstellen Sie ein größeres Bild, das aus 288 Pixelzeilen besteht, die jeweils 288 Pixel hoch sind (288 x 288 Pixel).
Was Gimp für Sie tut, wenn Sie "Bild -> Druckgröße" durchgehen: Es vereinfacht den Prozess der Neuberechnung der erforderlichen Änderungen der absoluten Pixelgrößen und macht es benutzerfreundlicher. Für diesen Zweck...
cm
,mm
oderinch
) der Ausdruck auf Papier erscheinen soll.Nach diesen beiden Informationen berechnet Gimp dann die Gesamtzahl der Pixel, die es verwenden muss (aus der ursprünglichen Pixelzahl extrapolieren), um den angeforderten Platz mit der angeforderten Auflösung auszufüllen.
Wenn Sie jedoch ein Rasterbild vergrößern, indem Sie es mehr Pixel enthalten, werden keine echten Informationen hinzugefügt, und es wird nur eine fiktive Qualität hinzugefügt. Für das menschliche Auge mag es besser aussehen , wenn Ihr Scale-up-Algorithmus "gut" ist. Und es wird hässlich aussehen, wenn Sie vorhandene Pixel einfach verdoppeln, verdreifachen oder vervierfachen, wie dies bei einigen einfachen Algorithmen der Fall ist.
Bei Rasterbildern ist
die DPI-Einstellung nur beim Drucken oder Anzeigen relevant. Weil Drucker oder Monitore vorgegeben haben, feste Auflösungen. Deshalb ist es Info, dass nur ...
muss wissen.
Und die Dokumentation von ImageMagick stimmt voll und ganz mit mir überein:
Für Vektorgrafiken oder Dateiformate
(wie PDF oder PostScript) ist die DPI-Einstellung jedoch äußerst wichtig, um sie zu rastern . Ein höherer DPI-Wert überträgt mehr Bildinformationen in das Rasterformat und bewahrt so mehr Details von der tatsächlichen Originalqualität. Wenn Sie ein Vektorbild einer bestimmten Größe inoderin ein Raster mit einer höheren DPIkonvertieren
mm
,wird dies direkt in eine höhere Anzahl von Gesamtpixeln im Bild umgesetzt.cm
inch
Außerdem unterstützt ImageMagick das Drucken als solches nicht. Stattdessen nur ImageMagick ...
... aber um die manipulierten Bilder auszudrucken, müssen Sie ein anderes Programm verwenden.
Einige Bildformate (TIFF, PNG, ...) unterstützen das interne Speichern einer DPI-Einstellung in ihren Metadaten.
Dies ist jedoch nur ein Hinweis, der das zugrunde liegende Rasterbild nicht verändert. Das ist der Grund, warum Sie diese Entdeckung gemacht haben:
Dieser "Hinweis" kann möglicherweise automatisch von Druckertreibern oder Seitenerstellungsprogrammen wie LaTeX ausgewertet werden. Ohne solche DPI-Hinweise (oder wenn sie sich nicht so präsentieren, wie es LaTeX erwartet), sollte LaTeX in der Lage sein, ein bestimmtes Bild auf einer Seite so wiederzugeben, wie man es erwartet zu - es braucht nur etwas mehr expliziten LaTeX-Code um das Bild!
Einige andere Bildformate (JPEG (?), BMP, ...) unterstützen nicht einmal das Speichern eines DPI-Hinweises auf ihre internen Metadaten.
Daher unterstützt Gimp nur das, was Sie mit "Bild -> Druckgröße" sehen, da es ein Bild drucken möchte. Mit ImageMagick können Sie nicht drucken.
Machen Sie weiter mit Gimp, was Sie wollen, wenn Sie drucken. Bei ImageMagick ergibt das keinen Sinn.
Siehe auch dieses zusätzliche IM-Dokumentations-Snippet , in dem dasselbe Thema mit anderen Worten erklärt wird.
Was also bleibt, ist folgendes:
Bitte geben Sie Folgendes an, um das oben genannte Problem zu beheben:
convert -version
undconvert -list configure
);Auf diese Weise können wir helfen, das Problem zu lösen.
Aber beachten Sie: Dies ist ein anderes Problem als das, was Ihr aktuelles Thema / Ihre Überschrift fragt: "Ich möchte DPI mit Imagemagick ändern, ohne die tatsächliche Bytegröße der Bilddaten zu ändern."
Aktualisieren
Da einigen Lesern immer noch nicht klar ist, was ich oben notiert habe, ist hier ein weiterer Versuch ...
Was in einer Bilddatei als "Auflösung" oder "Dichte" angegeben ist, ist ein Metadatenattribut . Sie hat keinen Einfluss auf die Anzahl der tatsächlich von der Datei beschriebenen Pixel und ist in dieser Hinsicht völlig irrelevant. Es handelt sich lediglich um einen Hinweis, dem ein Druck- oder Renderinggerät oder eine Anwendung beim Drucken, Rendern oder Anzeigen des Bildes folgen kann oder nicht .
Zu diesem Zweck sind nur einige wenige Nummern in der Bilddatei gespeichert. Diese Zahlen geben Auskunft über Ausgabegeräte wie Drucker und zeigen an, wie viele Punkte (oder Pixel) pro Zoll das Bild angezeigt werden soll. Bei Vektorformaten wie PostScript, PDF, MWF und SVG weist die Pixelskala an, alle vom Bild verwendeten Koordinaten der realen Welt zu zeichnen.
Ein Beispiel, bei dem der von ImageMagick in den Bildmetadaten festgestellte Auflösungswert von einer Anwendung NICHT berücksichtigt wird, ist Adobe Photoshop. Photoshop speichert seine Hinweise zu einer gewünschten Druck- oder Anzeigeauflösung in einem proprietären Profil mit dem Namen 8bim . ImageMagick berührt dieses Profil nicht, auch wenn Sie aufgefordert werden, eine Auflösungsänderung in die Metadaten einer Bilddatei zu schreiben. Photoshop hingegen ignoriert alle von ImageMagick in dem für diesen Zweck definierten Standard-Metadatenfeld gespeicherten Auflösungshinweise, sobald es sein eigenes 8bim- Profil sieht .
Das OP sollte die Überschrift gewählt haben:
um alle missverständnisse zu vermeiden ...
quelle