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

Вниз

Как преобразовать пиксель 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 вся ветка

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

Наверх





Память: 0.46 MB
Время: 0.039 c
14-1118729210
Rouse_
2005-06-14 10:06
2005.07.11
Репортажик о отдыхе в Костроме


1-1118908486
<Lelik>
2005-06-16 11:54
2005.07.11
Про Count


14-1118488068
Иксик
2005-06-11 15:07
2005.07.11
Ваше отношение к домашней школе?


14-1118141406
Difficult
2005-06-07 14:50
2005.07.11
Флюгер


1-1119443714
Ded Moroz
2005-06-22 16:35
2005.07.11
Transparent Background





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