*grummel*
hab Geister gesucht. Wenn ich die Zuweisung der Palette nach oben verschiebe über die Zuweisung der Werte funktioniert alles
Delphi-Quellcode:
var
rowGrey: PByte;
rowRGB: ^TRGBTriple;
GrayPal:TMaxLogPalette;
PaletteSize: integer;
...
image := TBitmap.Create;
image.PixelFormat := pf8bit;
image.Width := image1.Picture.Width;
image.Height := image1.Picture.Height;
GrayPal.palVersion := $0300;
GrayPal.palNumEntries := 256;
for i := 0 to 255 do
begin
GrayPal.palPalEntry[i].peRed := i;
GrayPal.palPalEntry[i].peGreen := i;
GrayPal.palPalEntry[i].peBlue := i;
GrayPal.palPalEntry[i].peFlags := PC_NOCOLLAPSE;
end;
image.Palette := CreatePalette(PLogPalette(@Graypal)^);
for j := 0 to image1.Picture.Height-1 do begin
rowGrey := image.ScanLine[j];
rowRGB := image1.Picture.Bitmap.Scanline[j];
for i := 0 to image1.Picture.Width-1 do begin
rowGrey^ := min(round(rowRGB^.rgbtRed), 255);
inc (rowGrey);
inc (rowRGB);
end;
end;
ImageJ zeigt mir nun auch grayscale LUT und nicht mehr color LUT. Warum eine spätere Zuweisung einer LookUpTable die eigentlichen Werte im TBitmap verändert ist mir noch nicht so ganz klar und warum es dafür keine Funktion zu geben scheint auch nich aber nun ja tut nun
danke an alle