Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2015.05.03;
Скачать: [xml.tar.bz2];

Вниз

Преобразовать картинку в массив байтов 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 вся ветка

Форум: "Media";
Текущий архив: 2015.05.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.002 c
15-1411245003
Юрий
2014-09-21 00:30
2015.05.03
С днем рождения ! 21 сентября 2014 воскресенье


2-1391965921
Вова
2014-02-09 21:12
2015.05.03
Нужен алгоритм


15-1411293130
Rouse_
2014-09-21 13:52
2015.05.03
Ole DradDrop


8-1236085248
StriderMan
2009-03-03 16:00
2015.05.03
Преобразовать картинку в массив байтов RGB


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский