habs endlich hinbekommen.
Und zwar sind die PNG´s mit 8 bit Farbtiefe.
Hab deshalb versucht die Farbpalette neu zu machen und siehe da, es geht
Falls jemand interesse hat, hier der code:
Code:
procedure TForm1.setpalette;
var
X, Y, PalCount: Integer;
Line: Pointer;
PaletteHandle: HPalette;
Palette: array[Byte] of TPaletteEntry;
png1: TPNGObject;
begin
png1 := TPNGObject.create;
//png1.LoadFromFile('Quellbild.png');
try
png1.LoadFromFile('kacke.png');
if png1.Header.ColorType = COLOR_PALETTE then
begin
PaletteHandle := png1.Palette;
PalCount := GetPaletteEntries(PaletteHandle, 0, 256, Palette);
for x := 0 to PalCount-1 do
begin
Palette[x].peRed := r;
Palette[x].peGreen := g;
Palette[x].peBlue := b;
end;
SetPaletteEntries(PaletteHandle, 0, PalCount, Palette);
png1.Palette := PaletteHandle;
end;
png1.SaveToFile('kacke.png');
finally
png1.free;
end;
end;
einfach für r,g und b die gewünschten Werte festlegen und gut ist