[Gelöst] GDIPlus Image hat falsche Größe

  • Moin,

    das Problem ist bereits gelöst (bzw. ein einfacher Workaround gefunden), weil mich die Sache aber lange geplagt hat schreibe ich hier mal um was es geht, falls andere das selbe Problem haben.

    Je nachdem mit welchem Programm man Bilder bearbeitet wird im Bild ein unterschiedlicher DPI Wert gesetzt. Manche Programme denken 72 ist gut, manche 96, manche 100, und manche nehmen den Wert den dein Bildschirm gerade eingestellt hat. In vielen Fällen ist einem der DPI Wert aber vollkommen egal, alles was man will ist "ein Pixel = ein Pixel", no questions asked.

    Im Beispiel ist 2x dasselbe Bild (1x mit "default Einstellungen" meines Programms = 100 DPI), und 1x "ohne" explizite angabe der DPI (dann nimmt mein PC automatisch 96, wie das bei anderen Leuten aussieht weiß ich nicht), und ein Skript das die Bilder via _GDIPlus_GraphicsDrawImage anzeigt. Man sieht, die Bilder sind verschieden groß, und gerade bei Pixeligen Sachen entstehen subsampling Artefakte. Das Problem lässt sich lösen, indem man _GDIPlus_BitmapSetResolution verwendet und allen Bildern denselben Wert verpasst, oder explizit die Größe beim Zeichnen via _GDIPlus_GraphicsDrawImageRect mitgibt.

    Fazit: _GDIPlus_GraphicsDrawImage berücksichtigt beim Zeichnen die DPI und verursacht damit manchmal ungewünschte Probleme (z.B Bilder haben die falsche Größe).

    Edit: Ja, ich habe auf beide Testbilder "Testbild 1" geschrieben... Eigentlich wollte ich "Testbild 2" auf das 2te Bild schreiben, dann ist mir aber eingefallen, dass es sich dann ja gar nicht mehr um "das selbe" Bild handelt, und ich wollte ja "das selbe" Bild nur mit verschiedenen DPI Werten haben... Zwickmühle :D

    lg

    M

  • Mich hat das neulich vollkommen auf die Palme gebracht (und ich dachte ich bin komplett verblödet :rofl: )

    Habe ein Bild via _GDIPlus_GraphicsDrawImage angezeigt und anschließend mit der Maus ein Rechteck darauf markiert das dann ausgeschnitten werden sollte, und das hatte jedes Mal ein paar Pixel falsch (da der Unterschied von 96 DPI auf 100 DPI so klein ist habe ich gedacht irgendwo muss es seltsame Rundungsfehler geben). Es hat Stunden (und 2-3 Nächte darüber Schlafen, als ich das Skript schon als "fertig, klappt aber nicht" abgelegt hatte) gebraucht bis mir ein Licht aufgegangen ist^^

    lg

    M