德尔福。将位图图像转换为2D阵列

时间:2013-07-07 00:40:24

标签: arrays delphi bitmap 2d palette

我有一个80x40像素的gif图像。此图像的调色板由几个在调色板中具有不同数字的相似颜色组成。如何构建一个二维数组,其中x,y的单元格将是调色板中的一些颜色?

2 个答案:

答案 0 :(得分:3)

TGifImage内置了这样的数组,所以只需使用它:

var 
  Gif:TGifImage;
  PaletteIndex : byte;
begin
  Gif := TGifImage.Create;

  // ... load your stuff here ...

  // TGifImage has an Images property, which is probably only interesting if you're dealing with animations, so just take the first image.
  PaletteIndex := Gif.Images[0].Pixels[0,0]; // palette index for top-left pixel 

  // Now, to get the actual TColor for that pixel, you could do this:
  Self.color := Gif.Images[0].ColorMap.Colors[PaletteIndex];

end;

答案 1 :(得分:0)

您可以将图片加载到TBitmap。然后,您可以使用ScanLine类的TBitmap属性。此索引属性采用行的0索引,并返回指向该行的像素值的指针。请查看this page以了解有关ScanLine属性的更多信息。