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

Вниз

Как преобразовать пиксель 16бит в 24 бит RGB BMP   Найти похожие ветки 

 
Vladimirs ©   (2005-03-08 19:17) [0]

Как преобразовать пиксель 16 бит в 24 бит RGB
Спасибо за любую помощь!


 
uny ©   (2005-03-08 19:23) [1]

>пиксель 16 бит
формат какой? нужно в формат 24 бит rgb, а из какого?


 
Vladimirs ©   (2005-03-08 19:27) [2]

формат RGB BMP 16 bitperpixel


 
Fenik   (2005-03-08 19:38) [3]

Bitmap.PixelFormat := pf24Bit; ??


 
Vladimirs ©   (2005-03-08 19:40) [4]

Мне надо ПИКСЕЛЬ 16бит вручную взять из BMP и по алгоритму (который для меня загадка) преобразовать его в 24 бита пиксель.
На сколько я знаю в 16 бит R G B цветам отведено по 5 бит.


 
uny ©   (2005-03-08 19:42) [5]

[2] Vladimirs ©   (08.03.05 19:27)
если не подходит  [3] Fenik,
то делайте вручную - в фотошопе если нажать сохранить как и выбрать расширенные параметры, то показываются возможные варианты 16 битного бмп - по 5 бит на каждый цвет, по 5, а на зелёный 6 бит и вроде ещё.
берёте 16 бит и достаёте цвета, скажем   (pixel and 31) = выделили младшие 5 бит, какой то цвет


 
Fenik   (2005-03-08 20:23) [6]

var Color: TColor;
   R, G, B: Byte;
begin
 Color := Bitmap.Canvas.Pixels[x, y];

 R := Lo(Color);
 G := Lo(Color shr 8);
 B := Lo((Color shr 8) shr 8);
end;

или почитай http://www.delphimaster.ru/articles/pixels/index.html


 
Eraser ©   (2005-03-09 11:45) [7]

Vladimirs ©

Всё не так просто, есть два 16 битных формата- RGB555 и RGB565, я одно время с этим запарился...


 
Хочу помочь   (2005-03-09 20:28) [8]


var ABitmap: TBitmap;
 Pixel16: Word;
 R16: 0..31; // 5 bits
 G16: 0..63; // 6 bits
 B16: 0..31; // 5 bits

 Red, Green, Blue: Byte;
 rgbRed, rgbGreen, rgbBlue: Byte;

begin

 R16 := 31; // Max Red
 G16 := 63; // Max Green
 B16 := 0; // No Blue

 Pixel16 := (R16 shl 11) or (G16 shl 5) or B16;

 Red := (Pixel16 and $F800) shr 11;  // $F800 = 1111 1000 0000 0000
 Green := (Pixel16 and $7E0) shr 5;  // $7E0 = 0000 0111 1110 0000
 Blue := (Pixel16 and $1F);    // $1F = 0000 0000 0001 1111

 ShowMessage("RGB16:  " + IntToStr(Red) + "; " + IntToStr(Green) +
   "; " + IntToStr(Blue));

 rgbRed := Trunc(Red / 31 * 255);
 rgbGreen := Trunc(Green / 63 * 255);
 rgbBlue := Trunc(Blue / 31 * 255);

 ShowMessage("RGB24:  " + IntToStr(rgbRed) + "; " + IntToStr(rgbGreen) +
   "; " + IntToStr(rgbBlue));


 
uny ©   (2005-03-09 20:40) [9]

>31 * 255
>63 * 255
а если просто умножить на 8 и на 4 соответственно?


 
Хочу помочь   (2005-03-10 19:11) [10]

>а если просто умножить на 8 и на 4 соответственно?

В ходе оптимизации - разумеется.



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

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

Наверх




Память: 0.46 MB
Время: 0.029 c
4-1115983214
Бульбаш
2005-05-13 15:20
2005.07.11
Каким образом можно получить email пользователя?


1-1119387638
NightHunter
2005-06-22 01:00
2005.07.11
ЛЮДИ НАДО ПРОСТО ХОВАЙСЯ. HTML документы


6-1110566218
Arazel
2005-03-11 21:36
2005.07.11
Передача файлов удаленна через сокет ВОЗМОЖНО ЛИ ЭТО?


9-1112006972
craKer
2005-03-28 14:49
2005.07.11
Наложение текстуры тайлами (GLscene)


4-1116329724
Вадим_ВВ
2005-05-17 15:35
2005.07.11
Работа с Win Api





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский