2013-07-07 5 views
5

У меня есть изображение в формате gif размером 80x40 пикселей. Цветовая палитра этого изображения состоит из нескольких похожих цветов, которые имеют разные цифры в палитре. Как я могу построить массив 2d, где ячейка в x,y будет цветом в палитре?Delphi. Преобразование растрового изображения в 2D-массив

+1

Прямой доступ к X-му элементу Y-й 'Scanline' даст вам нужный индекс таблицы цветов. – OnTheFly

+0

Может кто-нибудь объяснить, почему этот вопрос приостановлен как не по теме? –

+1

На самом деле это хороший вопрос, который мог бы дать четкий ответ, если бы он не был заблокирован людьми, которые, вероятно, даже не понимают вопрос. 3 из доводчиков никогда не отправляли никаких вопросов или ответов с помощью тега Delphi. –

ответ

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

Кстати, это может быть хорошим местом, чтобы выразить свою признательность Андерсу Меландеру за пожертвование vcl.Imaging.GIFImg.pas –

+0

Да! Оно работает!!! Спасибо! – Yazon2006

0

Вы можете загрузить свое изображение в TBitmap. Затем вы можете использовать свойство ScanLine класса TBitmap. Это индексированное свойство принимает индекс на основе 0 строки и возвращает указатель на значения пикселей для этой строки. Взгляните на this page, чтобы узнать больше о ScanLine.

+2

Это не то, что означает плакат вопроса. Он хочет знать индекс в цветовой палитре, а не индекс в строке сканирования. –

+0

К сожалению, сканирование не работает должным образом, но спасибо за ответ! – Yazon2006

 Смежные вопросы

  • Нет связанных вопросов^_^