Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PNG image von 8 Bit auf 24 Bit Farbtiefe konvertieren? (https://www.delphipraxis.net/81297-png-image-von-8-bit-auf-24-bit-farbtiefe-konvertieren.html)

OldGrumpy 24. Nov 2006 10:04


PNG image von 8 Bit auf 24 Bit Farbtiefe konvertieren?
 
Hallo zusammen,

ich stehe momentan vor einem kleinen Problemchen, ich habe ein Fenster mit vorgegebenem Platz für ein Bild. Die Bilder liegen als PNG vor, leider nicht alle im richtigen Format. Wenn das PNG File 24 Bit Farbtiefe hat, kann ich es problemlos resizen, nur leider sind einige auch mit nur acht Bit Farbtiefe gespeichert. Kennt vielleicht jemand eine Möglichkeit, das vorliegende PNG von acht auf 24 Bit Farbtiefe aufzublasen damit ich es danach resizen kann? Manuelles Nachbearbeiten aller Files ist in diesem Fall leider keine Option :(

Momentan benutz ich die PngImage-Komponente von pngdelphi.sourceforge.net und eine Resize-Funktion die ein User von PngImage beigetragen hat (auch von der Website). Leider gibts da aber nix zum Manipulieren bzw. Konvertieren zwischen verschiedenen Farbtiefen...

Jegliche sachdienliche Hinweise sind hochwillkommen :)

Der_Unwissende 24. Nov 2006 12:54

Re: PNG image von 8 Bit auf 24 Bit Farbtiefe konvertieren?
 
Zitat:

Zitat von OldGrumpy
Leider gibts da aber nix zum Manipulieren bzw. Konvertieren zwischen verschiedenen Farbtiefen...

Hi,
mal ungetestete zwei Tipps/Möglichkeiten. Die Information wieviele Bit pro Pixel verwendet werden und wie welcher Farbtyp verwendet wird, kannst du durchaus auslesen (und sogar verändern).
Da findest du die Eigenschaft TPngObect.Header.Bitdepth bzw. TPngObect.Header.Colortype. Das setzen dürfte allerdings wenig bringen (da hier kein Setter verwendet wird, dürfte das Setzen eher zu Problemen führen). Kannst es aber ja mal damit versuchen.

Ansonsten kannst du hier auf jeden Fall schon mal die PNGs filtern, die keine 24 Bit Farbtiefe (8 Bit / Pixel + RGB). Diese kannst du dann einem Bitmap zuweisen, das Pixelformat der Bitmap auf 24 Bit setzen und aus dieser Bitmap ein neues TPngObject erzeugen. Ist nicht wirklich elegant, aber sollte funktionieren.

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz