Forum: Algorithmen, Datenstrukturen und Klassendesign
by Delphi.Narium,
26. Mär 2020
Jain,
Farbtiefe ist bei i+8+8 schon korrekt. Aber Farbtiefe ist ja nicht Colortype. Der steht im Byte dahinter.
Also könnte sowas dadraus werden (nur hingedaddelt):type
TChunkname = array of AnsiChar;
function SwapEndianness(i: Integer): Integer;
begin
Result := ((i and $FF000000) shr 24) or
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Delphi.Narium,
26. Mär 2020
Vermutlich liest Du ein Byte zuwenig.
Habe mal 'ne Reihe von PNGs im Hexeditor angeschaut.
Bei allen steht der Colortype im 26. Byte. Dort finde ich entweder den Wert 2 oder den Wert 3. Bei allen PNGs enthält das 25. Byte eine 8.
Wenn ich es richtig sehe, müsste es Farbtyp := @m; sein.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Delphi.Narium,
26. Mär 2020
Spezifikation: http://www.libpng.org/pub/png/spec/1.2/PNG-Contents.html
Wikipedia: https://en.wikipedia.org/wiki/Portable_Network_Graphics#Pixel_format
Dort nach "Pixel format" suchen.
Kurz dahinter steht in einer Tabelle sowas:
3 (0112) indexed: channel containing indices into a palette of colors