Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.05.03;
Скачать: CL | DM;

Вниз

Преобразовать картинку в массив байтов RGB   Найти похожие ветки 

 
StriderMan   (2009-03-03 16:00) [0]

Есть ImageList с картинками. Нужно выдернуть из него картинку по заданному индексу, преобразовать в массив байтов RGB, причем на пиксел выделяется именно по 3 байта подряд.

Все это дело нужно передать потом в чужое API.

Пока сделал так:


type
 TRGB = record
   case integer of
   1: (RGB: LongInt);
   2: (B, G, R, O: BYTE);
 end;

procedure ILIndexToPByte(const AImageList: TImageList; AIndex: integer; ADest: PByte; const AWidth, AHeight: integer);
var
 x, y: integer;
 rgb: TRGB;
 bm: TBitMap;
begin
 bm := TBitMap.Create;
 try
   AImageList.GetBitmap(AIndex, bm);
   for x := 0 to min(bm.Width, AWidth) - 1 do
     for y := 0 to min(bm.Height, AHeight) - 1 do
     begin
       rgb.RGB := ColorToRGB(bm.Canvas.Pixels[x, y]);
       ADest^ := rgb.R;
       inc(ADest);
       ADest^ := rgb.G;
       inc(ADest);
       ADest^ := rgb.B;
       inc(ADest);
     end;
 finally
   bm.Free
 end;
end;


Кто знает, как это сделать по-нормальному без переливания из пустого в порожнее? Или закэшировать сразу все картинки по массивам?


 
MBo ©   (2009-03-03 16:08) [1]

функция GetDiBits
если картинка 32-битная, то можно перевести ее предварительно в 24-битный формат, либо использовать ScanLine для выделения только цветовых байтов.


 
StriderMan   (2009-03-03 16:21) [2]


MBo ©   (03.03.09 16:08) [1]
> функция GetDiBits

Это все равно сначала в TBitMap надо слить все?


 
MBo ©   (2009-03-03 16:37) [3]

>Это все равно сначала в TBitMap надо слить все?
Да.



Страницы: 1 вся ветка

Текущий архив: 2015.05.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.005 c
2-1392202611
Сергей
2014-02-12 14:56
2015.05.03
работа с FLAC и APE файлами


2-1392238791
Novicer
2014-02-13 00:59
2015.05.03
Как изменить результаты запроса в DbGrid?


15-1410689079
Вячеслав
2014-09-14 14:04
2015.05.03
Инструментарий для распределенной работы над проектом


3-1303936117
Lutdan
2011-04-28 00:28
2015.05.03
Поиск по дате в БД Access


15-1410640202
Юрий
2014-09-14 00:30
2015.05.03
С днем рождения ! 14 сентября 2014 воскресенье