SavePixmapPNG - DPI ändern?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Ratchet

Betreff: SavePixmapPNG - DPI ändern?

BeitragMi, Apr 28, 2010 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich speicher ein Pixmap als PNG mit SavePixmapPNG ab. Allerdings müsste mein Bild einen DPI Wert von 300 haben. Lässt sich das irgnendwie direkt mit BM ändern?
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Goodjee

BeitragMi, Apr 28, 2010 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
resizepixmap
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Ratchet

BeitragMi, Apr 28, 2010 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Größe ändern möchte ich eigentlich nicht. Ich beschreibe mal welches Verhalten ich nachbilden möchte:
Ich will mein erzeugtes Bild in ein Programm laden welches mit 300 dpi arbeitet. Lade ich mein Bild rein ist es zu groß (falsche dpi). Wenn ich mit einem Grafikprogramm die dpi auf 300 setze ändert sich nichts an der Größe des Bildes, aber das Programm läd es in der richtigen Größe. Deswegen würde ich die Umstellung der Auflösung gerne gleich im BM Code erledigen.
Ich dachte zwar immer wenn ich die dpi umstelle müsste sich an der Größe des Bildes auch was ändern, weil sich ja die Anzahl der Pixel pro Zoll ändern, aber das tut es eben nicht.
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Goodjee

BeitragMi, Apr 28, 2010 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
dpi sind dots per inch, also pixel per inch

du musst also wissen wie viele inch dein bild am ende groß sein soll, bei 300 dpi ist deine pixelauflösung dann 300*größe

auf diese größe skalierst du dann dein bild mit resizepixmap
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Noobody

BeitragMi, Apr 28, 2010 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
SavePixmapPNG benutzt intern die libpng, also die offizielle Lib zum speichern und lesen von PNGs. Wenn man ihr Manual durchliest, sieht man, dass die Befehle png_set_sCAL bzw. png_set_sCAL_s die sind, die du suchst. Manual hat Folgendes geschrieben:
png_set_sCAL(png_ptr, info_ptr, unit, width, height)
unit - physical scale units (an integer)
width - width of a pixel in physical scale units
height - height of a pixel in physical scale units
(width and height are doubles)

Ich schätze mal, 'physical scale units' werden von deinem Programm als Inches aufgefasst; width und height müsstest du also jeweils auf 300 setzen, um die 300 DPI zu erreichen.

Leider sieht es so aus, als ob die Funktion in pub.libpng nicht gewrappt ist, die müsstest du dort also noch nachreichen. Dann musst du die Funktionsaufrufe in BRL.PNGLoader in der Funktion SavePixmapPNG einfügen. Wo genau die Aufrufe hingehören, ist vermutlich auch dem Manual zu entnehmen.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Ratchet

BeitragMi, Apr 28, 2010 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Noobody. Ich werde mal versuchen damit etwas zu erreichen.
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group