Erstellen einer Fläche mit unterschiedlichen DPI Werten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Kl.Frage
User
Beiträge: 1
Registriert: Mittwoch 3. Mai 2023, 09:22

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.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Woher weiß paint, dass es 300DPI anwenden soll? Solche Metainformation muss mitgegeben werden. Schau dir an, ob die API da was bietet.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
ThomasL
User
Beiträge: 1379
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

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?
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten