Arrays 德尔菲。将位图图像转换为二维数组

Arrays 德尔菲。将位图图像转换为二维数组,arrays,delphi,bitmap,2d,palette,Arrays,Delphi,Bitmap,2d,Palette,我有一个80x40像素的gif图像。此图像的调色板由几个在调色板中具有不同编号的类似颜色组成。如何构建一个二维数组,其中x,y处的单元格将是调色板中的一个颜色数?您可以将图像加载到TBitmap中。然后可以使用TBitmap类的ScanLine属性。此索引属性获取行的基于0的索引,并返回指向该行像素值的指针。查看以了解有关扫描线属性的更多信息。tgiImage内置了这样一个数组,因此只需使用它: var Gif:TGifImage; PaletteIndex : byte; begin

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

您可以将图像加载到
TBitmap
中。然后可以使用
TBitmap
类的
ScanLine
属性。此索引属性获取行的基于0的索引,并返回指向该行像素值的指针。查看以了解有关扫描线属性的更多信息。

tgiImage内置了这样一个数组,因此只需使用它:

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;

直接访问Y-th
Scanline
的X-th元素将为您提供所需的颜色表索引。有人能解释一下为什么这个问题作为非主题被搁置吗?这实际上是一个很好的问题,如果没有被可能连问题都不懂的人阻止,它可能会有一个清晰的答案。其中3个收银员从未发布过任何带有德尔福标签的问题或答案。@TLama:Yay,这个网站上的新收银员系统工作正常!谢谢你的重播,伙计。现在,如果只有那些挥舞着徽章的JQuery大师能够离开我们的Delphi草坪,我们就会有收获:)这不是问题海报的意思。他想知道调色板中的索引,而不是扫描线中的索引。不幸的是,扫描线不能正常工作,但谢谢你的回答!顺便说一句,这可能是一个表达我对安德斯·梅兰德捐赠vcl.Imaging.GIFImg.pas的感谢的好地方