jpg-illuminator: Bildgröße mit dpi anpassen

  • ji 4.3.3.2


    Mit "Bild verkleinern oder vergrößern" habe ich Probleme.


    Hier steht "(für cm-Eingabe) dpi 300".


    Was bedeutet dieses?


    Im konkreten Fall steht "lange Seite 460". Ist das cm, mm , dpi?


    Ich möchte 130 mm Seitenlänge und habe aus dem Menü 13cm ausgewählt. Das Ergebnis ist laut IrfanView 1535 x 1535 Pixel / 54,2 x 54,2 cm. Diese Wete kann ich in keiner Weise nachvollziehen.


    Was ist/mache ich falsch?

    • Offizieller Beitrag

    Hallo Pixelfan,
    weil ich nicht ganz sicher bin, wo das Problem liegt, ist meine Antwort etwas ausführlich:


    Wenn in den Edits Zahlen ohne Einheit stehen, dann sind das immer absolute Pixelzahlen. Stattdessen kannst du die Eingabe auch mit % oder cm machen.


    Der Algorithmus zum Vergrößern/Verkleinern braucht natürlich die Kenntnis, welche Pixelzahl das Ergebnis haben soll. Wenn man diese aber nicht weiß, weil man die Größe in cm angeben will, muss man zusätzlich angeben, wieviele Pixel ein cm haben soll. Diese Einheit ist leider unüblich, man gibt statt dessen an, wieviele Pixel ein Zoll (inch) hat, z.B. 300 dpi, das sind 300 Pixel auf 2,54cm.
    In deinem Beispiel mit Länge 13cm ergeben sich dann bei 300dpi 1535 Pixel.
    (1inch = 2,54cm, deswegen: 13cm * 300dpi = 13 * 300 / 2,54 Pixel = 1535 Pixel)
    Wenn du für lange Seite "13cm" eintippst und 300dpi gewählt hast, ist dein Ergebnis 1535 Pixel lang. Und wenn das Ausgabegerät auf 300dpi eingestellt ist, dann sollte das Ergebnis genau 13cm lang sein.


    Dass ein anderes Programm in cm eine andere Länge angibt, liegt vermutlich daran, dass es nicht weiß, dass du 300dpi haben wolltest. Im Dateiheader wird von den Kameras eine dpi-Zahl eingetragen, die aber in der Regel nicht von Belang ist. Vielleicht orientiert sich IrfanView daran?


    Nachtrag:
    Vielleicht sollten wir die dpi-Zahl im Header eintragen, wenn eine cm-Eingabe erfolgt, damit niemand unnötig verwirrt wird?

  • <nörgelmode>
    Die ganze Aufregung um verschiedene DPI-Angabe bei identischem Bild-Inhalt habe ich noch nie verstanden :?: Das ist doch der Wert, der am Wenigsten über ds Bild aussagt.
    Wenn ich ein Bild mit 2000x3000 pixel habe und das auf 20x30cm ausdrucken möchte, dann gebe ich halt die Zielgröße an und der Druckertreiber sorgt dafür dass es passt. Und wenn das Bild 3000x4500 pixel groß ist dann passt es immer noch, auch wenn es laut dpi fast 160cm lang sein sollte :???:
    </nörgelmode>

    • Offizieller Beitrag
    Zitat von "Sunhillow"

    <nörgelmode>
    Die ganze Aufregung um verschiedene DPI-Angabe bei identischem Bild-Inhalt habe ich noch nie verstanden :?:


    Die "Aufregung" ergibt sich vermutlich aus Halbwissen und unterschiedlicher Herangehensweise bei Print- und Screen-Design. Am Monitor interessiert (wenn ein Bild bei der Wiedergabe nicht skaliert werden soll) nur die nakte Pixelzahl des Bilds. Wie groß die Darstellung dann in cm ist, ist unerheblich und hängt vom Monitor und seiner eingestellten Auflösung ab. Im Druckbereich kommt es meist auf die Ausgabegröße in cm an. Und wenn man nicht möchte, dass das Bild bei der Ausgabe nochmal skaliert wird, dann interessiert natürlich die dpi-Zahl des Geräts. Dann kann man sein Bild im Voraus z.B. auf 13cm bei 300dpi skalieren und angepasst an das beabsichtigte Druckverfahren schärfen. Das macht aber nur Sinn, wenn der Druck dann tatsächlich mit 300dpi erfolgt und man nicht einem Treiber sagt, das Bild solle 14cm groß werden.

  • Hallo Franz und Bertram, vielen Dank für eure Antworten.

    Zitat von "Franz"

    IrfanView scheint die im JPG-Header eingebettete DPI-Zahl zu nehmen (diese kann von den Exif-Daten abweichen :twisted:). Falls die DPI-Angabe nicht vorhanden ist, verwendet IrfanView anscheinend die Windows-Standard-Bildschirmauflösung 96 dpi.


    IrfanView verwendet im Falle eines fehlenden Header-Eintrages 72 dpi, ebenso wie Corel Paint Shop Pro. 96 dpi sind es bei Windows Photoanzeige und Paint, 75 dpi bei Picture Publisher. Sind bei Corel Paint Shop Pro keine Exif-Daten vorhanden, dann sind es jedoch 200 dpi.


    Zitat von "bertram"

    Dass ein anderes Programm in cm eine andere Länge angibt, liegt vermutlich daran, dass es nicht weiß, dass du 300dpi haben wolltest. Im Dateiheader wird von den Kameras eine dpi-Zahl eingetragen, die aber in der Regel nicht von Belang ist. Vielleicht orientiert sich IrfanView daran?


    Der dpi-Eintrag ist aber insofern von Belang, als dass er die Größe des Bildes beim Ausdruck bestimmt. Hätte im Header 300 pdi gestanden, dann hätte in der Dateiinfo von Irfanview in den Feldern "Auflösung" 300 dpi gestanden und als Druckgöße 13 cm. Da die Felder jedoch leer blieben, wurde für die Druckgröße 54,2 cm angegeben.


    Im vorliegenden Fall handelte es sich um die Kopie eines Bildes aus einem Video, dass ich nach Beschnitt für die Druckausgabe in IrfanView(ji kann so etwas leider noch nicht) gleich auf die Druckgröße einstellen wollte.


    Zitat von "bertram"

    Vielleicht sollten wir die dpi-Zahl im Header eintragen, wenn eine cm-Eingabe erfolgt, damit niemand unnötig verwirrt wird?


    Das ist sogar notwendig, damit sich die Bildgröße auch in andern Programmen (siehe z.B. IrfanView oder auch Corel Paint Shop Pro) auswirkt. Auch wenn es bereits, wie bei den Kamerabildern, einen Eintrag gibt, muss dieser übschrieben werden.


    Vewirrend war für mich die Zeile "(für cm-Eingabe) dpi 300".
    Offensichtlich ist sie nur bei cm-Eingabe aktiv. Daher wäre es besser, wenn das Eingbefenster in allen anderen Fällen ausgegraut wäre.


    Un falls ihr etwas ändern solltet: Vor "(für cm-Eingabe)..." sollte eine Leerzeile sein, damit es nicht so aussieht, als sei "(für cm-Eingabe)..." die Fortsetzung der darüberliegenden Zeile.

    • Offizieller Beitrag

    Danke an Pixelfan!


    In ji wird die dpi-Angabe einzig dafür benutzt, die Pixelzahl bei cm-Eingabe zu errechnen. Ansonsten hat sie keine Bedeutung.
    Da ich die genannten Programme nicht (bzw. nicht zum Drucken) verwende, ist mir erst mit deiner ausführlichen Erklärung klar geworden, dass es Sinn macht, die dpi-Zahl im Header einzutragen. (Übrigens ist der Header auch vorhanden, wenn das Bild keine Exifs enthält.)


    Wenn wir also den Header-Eintrag überschreiben, ergeben sich einige Fragen:
    Soll der Eintrag generell überschrieben werden oder nur, wenn das Bild skaliert wurde?
    Wenn generell: mit welchem Vorgabewert?
    Soll beim Skalieren eine Wahlmöglichkeit gegeben sein, ob der dpi-Eintrag erfolgt?
    Soll das gewünschte Verhalten bei den Optionen einstellbar sein?

    • Offizieller Beitrag

    Hier meine Meinung zu den Fragen:


    Zitat von "bertram"

    Soll der Eintrag generell überschrieben werden oder nur, wenn das Bild skaliert wurde?


    Nein, nur nach einer Skalierung, bei der auch die dpi-Zahl im Spiel war.


    Zitat von "bertram"

    Soll beim Skalieren eine Wahlmöglichkeit gegeben sein, ob der dpi-Eintrag erfolgt?
    Soll das gewünschte Verhalten bei den Optionen einstellbar sein?


    Zweimal Nein.


    Also das Verhalten genau wie bisher nur eine Übernahme der DPI-Zahl in Header+Exifs, falls eine entsprechende Skalierung erfolgt ist.

  • Zitat von "bertram"

    Wenn wir also den Header-Eintrag überschreiben, ergeben sich einige Fragen:
    Soll der Eintrag generell überschrieben werden oder nur, wenn das Bild skaliert wurde?

    Den Eintrag generell zu überschreiben, erscheint mir nicht sinnvoll, denn wer soll sagen, welcher Wert besser ist als der der Kamera oder, bei fehlendem Vorgabwert, der des jeweiligen Bildprogramms? Wenn jedoch der Anwender eine bestimmte Bildgröße festgelegt hat, dann muss ein vorhandener Wert überschrieben werden.

    Zitat von "bertram"

    Wenn generell: mit welchem Vorgabewert?
    Soll beim Skalieren eine Wahlmöglichkeit gegeben sein, ob der dpi-Eintrag erfolgt?

    Wenn der Anwender sich für eine Bildgröße in cm entschieden hat, dann ist diese ja für den Einsatz in einer externen Verwendung gedacht. Wenn er dieses nicht braucht, dann wählt er keine cm-Größe - Damit nutzt der Anwender schon die Wahlmöglichkeit. Eine weitere ist also nicht erforderlich.

    Zitat von "bertram"

    Soll das gewünschte Verhalten bei den Optionen einstellbar sein?

    Auch hier gilt ebenfalls das zuvor Geschriebene. Darum gibt es keine Notwendigkeit für eine einstellbare Option. Im übrigen kann der übertragene Header-Wert jederzeit im externen Programm abgewandelt werden, so wie es ja auch bei originalen Kamerabildern möglich und sogar notwendig ist.

  • Zitat von "Franz"

    Da finde ich unsere Lösung aber übersichtlicher.


    Ich weiß nicht genau, was du damit meinst. Aber ich habe mal darüber nachgedacht.


    Wenn ich die Bildqualität der Datei nicht verschlechtern will, dann muss ich dafür sorgen, dass die Pixelanzahl beim Verändern der Bildgröße erhalten bleibt. Würde sich die Pixelanzahl verändern, würden die Informationen der einzelnen Pixel auf andere mehr oder weniger stark verteilt und bei Pixelverringerung die Schärfe verringert. Das bedeutet, je kleiner das Bild sein soll, um so größer muss der Pixelwert werden.


    Ein Beispiel:
    Kamerabild 3456 x 1944 Pixel, x/y-Auflösung 72 dpi. Das ergibt eine Bildgröße von 48 x 27 Zoll = 121,92 x 68,58 cm.


    Soll die längste Seite 13 cm werden und die Pixelanzahl erhalten bleiben, so wird die x/y-Auflösung = (3456/130) * 25,4 = 675,25 Pixel/Zoll. Dieser Wert muss gerundet werden, in diesem Fall also auf 675 Pixel/Zoll, was eine geringfügige Anderung des Seitenlänge 13 cm bedeuten würde. Den Wert 675 als dpi kann man z.Zt. in ji leider nicht einstellen, es wäre also eine Bereichserweiterung erforderlich. Wenn dieses der Fall wäre, bräuchte am Bild nichts herumgerechnet werden, sondern nur im Header der DPI-Eintrag auf 675 gesetzt werden.


    Und woher kommt man eigentlich ohne zu rechenen oder probieren auf den Wert 675? Ganz einfach: ji errechnet ihn selbst, wenn man eine cm-Größe wählt! Und falls man selbst die Entscheidung treffen will, dann kann man diese ji-Aktivität deaktivieren (und natürlich auch wieder aktivieren). Auch hier wieder: Bei Aktivieren der automatischen Pixeleinstellung Ausgrauen des Pixelfeldes. Wäre das keine Lösung?

  • Zitat von "pixelfan"

    Pixelwert ... 675,25 Pixel


    Äh, wie kommst Du immer auf "Pixel"? Weißt Du wofür DPI steht?


    Und 675 dpi ... äh, schön und gut. Klar kannst Du sagen, daß ein Bild mit 3456 px rechnerisch 121cm@72 dpi entspricht. Und genau das gleiche Bild mag auch 13cm@675dpi entsprechen. Aber am Bild selbst ändert sich damit nichts und bis auf die Angabe dieser Daten ist das doch schnurz!?


    Ich seh es ein, wenn man sich die Ausgabegröße bei ner gewissen Druckauflösung angeben lassen möchte, oder umgekehrt. Oder beim genauen Verkleinern/Vergrößern des Bildes (für Unbedarfte interpolieren die Drucker eh besser) ... aber irgendwie dreht es sich hier im Kreis. ^^

    • Offizieller Beitrag

    Hallo Pixelfan,
    danke für deine Mühe!
    Natürlich können wir den Wertebereich des dpi-Eingabefelds erweitern. Aber ausgrauen? Das bedeutet normalerweise, dass keine Eingabe vorgenommen werden kann.
    Ich bin aber nicht ganz sicher, ob dein Ansatzpunkt sachgerecht ist, und zwar aus folgender Überlegung:
    Ich kenne kein Ausgabegerät, das ein Bild mit 675dpi ausgeben kann und erst recht nicht mit 675,25dpi (oder weiß ich da zu wenig?). Das würde bedeuten, dass der Treiber stattdessen vielleicht 600dpi benutzt und das Bild entsprechend skaliert, damit es die richtige Ausgabegröße bekommt. Aber das genau wolltest du ja vermeiden.
    Deswegen würde ich so vorgehen: man informiert sich zuerst darüber, mit welcher Auflösung in dpi das Ausgabegerät arbeiten kann, stellt diese dpi-Zahl ein, wählt die gewünschte Bildgröße in cm und skaliert das Bild auf die dafür nötige Pixelzahl. Dann kann man es nach Wunsch schärfen und dem Ausgabegerät übergeben. So hat man die Schärfe unter Kontrolle.


    Nachtrag: weiter unten habe ich diese Aussage relativiert.

  • Zitat von "RitterRunkel"


    Äh, wie kommst Du immer auf "Pixel"?


    Hallo RitterRunkel, nur nicht so aufgeregt! Natürlich ergibt Pixel geteilt durch Zoll als Ergebnis Pixel/Zoll. Das wars dann aber schon. Aber danke für den Hinweis.


    Alle weitern Zusammenhänge kannst du in IrfanView schön in den Dialogen "Größe ändern" und "Drucken" erkennen.

  • Zitat von "pixelfan"

    Hallo RitterRunkel, nur nicht so aufgeregt! Natürlich ergibt Pixel geteilt durch Zoll als Ergebnis Pixel/Zoll. Das wars dann aber schon. Aber danke für den Hinweis.
    Alle weitern Zusammenhänge kannst du in IrfanView schön in den Dialogen "Größe ändern" und "Drucken" erkennen.


    Klingt wohl aufgeregter als es war. Mal von dem "Pixelwert" abgesehen, weiß ich nicht, warum mir IrfanView verraten sollte, woher die Wurzeln Deines Wunsches nach freien DPI-Werten abhängig gegebener Bildmaße wurzeln ... ^^ Das hat mit Drucken nämlich mMn wenig zu tun, da es eher üblich sein sollte, sich nach der Druckauflösung zu richten und das Bild ggf. zu skalieren.

  • Hallo RitterRunkel,
    da ji nunmal eine Bildgrößenänderung auf cm-Basis ermöglicht, aber weder in ji selbst noch in dem zur Druckausgabe benutzten Bildprogramm die Ausgabegröße weder ersichtlich ist noch sich auswirkt, habe ich mich gefragt, wozu diese Möglichkeit dienen soll. Imgrunde wird nichts anderes getan, als die Pixelzahlen heruntergerechnet, was auf 2 andere Weisen ebenso möglich ist. Darum sollte ji den bei der Größenänderung benutzten DPI-Wert in den Header schreiben. Dann hat man bei der Druckausgabe bei 100% Maßstab/Skalierung die in ji gewählte cm-Größe.


    Nach meinem Vorschlag ist eine Umrechnung der Pixelzahlen sogar vermeidbar, indem ji bei der Bildgrößenänderung einen DPI-Wert wählt, der eine Pixelgrößenveränderung vermeidet. Dann ist die Datei in der Quallität nicht reduziert, sodass man bei der Druckausgabe ggfs.auch eine Druckgröße wählen kann, wie sie mit der Originaldatei möglich wäre. Das eigentliche Umrechnen macht in jedem Fall der Druckertreiber.

    • Offizieller Beitrag
    Zitat von "pixelfan"

    ... habe ich mich gefragt, wozu diese Möglichkeit dienen soll ...


    Z.B. dafür:
    Du gestaltest mit einem Layoutprogramm eine Zeitschrift. Du weißt, dass der Druck mit 300dpi erfolgen wird. Jetzt kannst du deine Bilder folgendermaßen optimieren: Ein Bild soll in der Zeitschrift eine Breite von 15cm bekommen. Dann berechnest du oder ein Programm die dafür nötige Pixelzahl und skalierst das Bild auf diese. In diesem Zustand kannst du das Bild optimal für das vorgesehene Druckverfahren schärfen. Jetzt übergibst du das Bild dem Layoutprogramm. Wenn du es dort nicht skalierst, hat es am Ende 15cm Breite und die optimale Schärfe.
    Wenn du das Bild aber im Layoutprogramm oder in IrfanView oder von einem Druckertreiber skalieren lässt, dann kannst du dir die ganze Mühe sparen, weil dann die optimale Schärfe wieder verloren ist.
    Ich verstehe nicht, wozu du das Bild in ji skalieren willst mit einem schrägen dpi-Wert, damit es in IrfanView beim Ausdruck nochmal skaliert wird. Dann ist es doch sinnvoller, es nicht selber zu skalieren sondern gleich in IrfanView eine dpi-Zahl und eine cm-Breite anzugeben. Könnte auch sein, dass es zwar bequem aber überhaupt nicht optimal ist, ein Bild mit diesem Programm auf diese Art zu drucken. (???)


    Nachtrag: Weiter unten habe ich diese Aussagen relativiert.

  • Egal, ob ich in ji 4.3.3.2 mit 600 dpi für 13 cm oder 300 dpi für 13 cm skaliere, IrfanView oder auch Corel Paintshop Pro X zeigen mir als Größe nicht 13 cm, sondern 108,3 bzw. 54,2 cm an. Und zwar allein aus der Tatsache, dass in den Exif-Daten beider Dateien für die Auflösung 72 dpi steht und nur die Pixelgröße unterschiedlich ist. Es fehlt eben der DPI-Headereintrag für eine korrekte Größenangabe


    Mit welchem Programm würdest du drucken?

  • Zitat von "bertram"

    Hallo Pixelfan,
    danke für deine Mühe!
    Natürlich können wir den Wertebereich des dpi-Eingabefelds erweitern. Aber ausgrauen? Das bedeutet normalerweise, dass keine Eingabe vorgenommen werden kann.


    Das soll ja nur für den Fall gelten, dass eine cm-Eingabe erfolgen und durch ji das Errechnen der DPI ohne Veränderung der Pixelgröße vorgenommen werden soll.


    Zitat

    Ich bin aber nicht ganz sicher, ob dein Ansatzpunkt sachgerecht ist, und zwar aus folgender Überlegung:
    Ich kenne kein Ausgabegerät, das ein Bild mit 675dpi ausgeben kann und erst recht nicht mit 675,25dpi (oder weiß ich da zu wenig?). Das würde bedeuten, dass der Treiber stattdessen vielleicht 600dpi benutzt und das Bild entsprechend skaliert, damit es die richtige Ausgabegröße bekommt. Aber das genau wolltest du ja vermeiden.


    Die 675 dpi, die im Header einer Bilddatei stehen müssten, sind nur eine rechnerische Größe. Teilt man die Pixelgröße des Bildes durch diesen Wert, erhält man die dazu gehörende Ausgabegröße. Das Bildprogramm liest diesen DPI-Wert aus und errechnet aus ihm und der Pixelzahl des Bildes die Abmessungen des Druckes, im Beispiel zu 13 x 7,31 cm.
    Würde das originale Kamerabild im Bildprogramm geöffnet, so würde nichts anderes geschehen, nur stände im Header 72 dpi. Dieses ergäbe eine Ausgabegröße von 121,92 x 68,58 cm. Da das nicht die gewünschte Größe ist, muss man im Drucken-Dialog eine entsprechende Änderung vornehmen, bei der ji-Datei stünde bereits ohne manuellen Eingriff die gewünschte Ausgabegröße. In beiden Fällen ist das Pixelpaket gleich groß, nämlich 3456 x 1944!), und die Vorgabe des Druckbereichs mit 13 x 7,31 cm ebenso. Damit hat der Drucker in beiden Fällen das Gleiche zu verarbeiten.


    Zitat

    Deswegen würde ich so vorgehen: man informiert sich zuerst darüber, mit welcher Auflösung in dpi das Ausgabegerät arbeiten kann, stellt diese dpi-Zahl ein, wählt die gewünschte Bildgröße in cm und skaliert das Bild auf die dafür nötige Pixelzahl. Dann kann man es nach Wunsch schärfen und dem Ausgabegerät übergeben. So hat man die Schärfe unter Kontrolle.


    Bei einem Laserdrucker mag man die Auflösung ja noch kennen, aber bei einem Tintenstrahldrucker mit seinen verschiedenen Druckqualitäten und Papiersorten weiss man das nicht. Auch wäre das Verfahren sehr umständlich. Einfacher wäre es, wenn es in ji auch eine Druckausgabe geben würde.

    • Offizieller Beitrag

    pixelfan:

    Zitat

    Einfacher wäre es, wenn es in ji auch eine Druckausgabe geben würde.


    Ja, das wäre für uns noch eine zweite Lebensaufgabe. :)


    Also:
    Ab dem nächsten Update wird im Header der dpi-Eintrag überschrieben, wenn das Bild mit cm und dpi skaliert wird.


    Aber wie du an unserer Diskussion siehst, haben wir sehr unterschiedliche Vorstellungen vom Zweck dieser Angelegenheit. Dazu kommt mein Zweifel, dass es überhaupt mehr als ein paar Programme/Ausgabegeräte gibt, die sich an dem Header-Eintrag orientieren.


    Weil ji keine Druckausgabe hat, werden wir das von dir vorgeschlagene Verfahren auch nicht umsetzen. Du wolltest: Ohne das Bild zu skalieren den dpi-Wert durch eine cm-Angabe berechnen und diesen dpi-Wert im Header eintragen. So eine Funktion hätte nichts im Skalieren-Menü zu suchen sondern gehört zur Druckausgabe.


    Zitat

    Mit welchem Programm würdest du drucken?


    In dieser Frage bin ich leider zu wenig firm (wie du auch an meiner vorsichtigen obigen Formulierung siehst). Ich wollte und kann nichts Negatives über die Druckfunktion von IrfanView sagen, sondern meinte, dass man mit dem von dir vorgeschlagenem Weg kein optimales Ergebnis erhält. Optimal heißt für mich: Das ausgebende Programm/Gerät muss das Bild nicht skalieren.


    Trotzdem vielen Dank für deine Vorschläge und Überlegungen. Das trägt sehr zur Klärung des Sachverhalts bei.


    Viele Grüße
    Bertram