Seite 1 von 1

Erstellen einer Fläche mit unterschiedlichen DPI Werten

Verfasst: Mittwoch 3. Mai 2023, 10:02
von Kl.Frage
Servus,

derzeit versuche ich eine Fläche mit den Abmaßen 7x7 cm zu erstellen. Die Fläche soll mit einer bestimmten Auflösung DPI (Dots per Inch) abgespeichert werden.
In meinen Programm rechne ich die Länge (7cm) mal die Auflösung (300) durch die Länge von 2.54 cm. Im Ergebnis erhalte ich eigentlich 826 Pixel für die 7cm. Jedoch nach dem öffnen des gespeicherten Bildes in Paint liegt die DPI bei 96 (punkte pro Zoll) und das Bild ist anstatt 7x7 cm jetzt 21,85x21,85 cm groß.

Derzeit sieht mein Programm so aus:

from PIL import Image

# Größe des Bildes in cm
width_cm = 7
height_cm = 7

dpi = 300

# Größe des Bildes in Pixel berechnen
width_px = int( width_cm * dpi / 2.54)
height_px = int( height_cm * dpi / 2.54)

# Neues Bild erstellen
img = Image.new('RGB', (width_px, height_px), color=(0, 255, 255))

# Bild anzeigen und speichern
img.show()
filename = 'XXX'+'7x7.bmp'
img.save(filename)

Ich hoffe Ihr könnt mir bei meinen kleinen Problem weiterhelfen. Bzw. Anregungen mir geben zur Lösung meines kleinem Problems.
Vielen Dank im Voraus.

Re: Erstellen einer Fläche mit unterschiedlichen DPI Werten

Verfasst: Mittwoch 3. Mai 2023, 10:18
von __deets__
Woher weiß paint, dass es 300DPI anwenden soll? Solche Metainformation muss mitgegeben werden. Schau dir an, ob die API da was bietet.

Re: Erstellen einer Fläche mit unterschiedlichen DPI Werten

Verfasst: Mittwoch 3. Mai 2023, 10:19
von Sirius3
Und an welcher Stelle teilst Du mit, dass die BMP-Datei eine Auflösung von 300dpi hat?

Aus der Dokumentation werde ich nicht schlau, ob bei BMP `save` das dpi-Argument verarbeitet. Mußt Du ausprobieren.

Re: Erstellen einer Fläche mit unterschiedlichen DPI Werten

Verfasst: Mittwoch 3. Mai 2023, 10:51
von __blackjack__
Und es könnte auch noch sein, dass sehr einfache Bildbearbeitungsprogramme die in den Metadaten angegeben DPI einfach ignorieren und sich nur die Pixeldaten anschauen.

Re: Erstellen einer Fläche mit unterschiedlichen DPI Werten

Verfasst: Mittwoch 3. Mai 2023, 15:45
von ThomasL

Code: Alles auswählen

img.save('test.png', dpi=(300.0, 300.0))
will do the trick

und in Google die Suchbegriffe "python create image with specific dpi" eingeben, hättest du doch auch können, oder?