Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];




Вниз

GrayScale 


Evgeny   (2001-11-02 13:04) [0]

Каким образом преобразовать Bitmap из цветного в серый, если Bitmap может быть и 8, и 16, и 24 - битным. Преобразовать 24 - битный Bitmap очень просто. А вот как тоже сделать с остальными форматами и достаточно компактно?



DK   (2001-11-04 02:59) [1]

image1.Picture.Bitmap.Monochrome;



Evgeny   (2001-11-05 07:21) [2]

>DK
К сожалению этот ответ из области VCL, а форум по WinAPI.
Вопрос остается открытым.
Есть смельчаки?



Raptor   (2001-11-05 23:05) [3]

Привет!

Если тебе с 24-битными легко, то должно быть легко и с другими формтами.
Там принцип конвертирования одинаковый. Просто для других форматов вытягивать значения R, G и B труднее.
Например для 16 бит, если не ошибаюсь, представление даных о компонентах R, G и B такое:
первые 5 бит - R
следующие 6 бит - G
последние 5 бит - B
Ну вот вытягивай их, а потом делаешь так как и для 24 бит.

Raptor.



Evgeny   (2001-11-06 06:43) [4]

>Raptor
Да наверно, если больше никто ничего не подскажет, это окажется единственным вариантом.



DMN   (2001-11-06 10:22) [5]

Если памяти не жаль - можно сперва перерисовать картинку в 24bit, а потом ее уже и серить :)



Evgeny   (2001-11-06 10:46) [6]

>DMN
Вот, вот. Как только создать этот Bitmap в 24 битах, не используя VCl? В API функция CreateCompatibleBitmap не очень для этого подходит, к тому же все это садится на CreateCompatibleDC, что тоже не способствует 100% 24 битности. Можно конечно подцепить юнит Graphics, ну уж очень не хочется ради одного Bitmap`а, добавлять к программе ~60 Kb.



Donal   (2001-11-06 10:56) [7]

тады пиши собственный TBitmap :-)))



DK   (2001-11-07 04:48) [8]

Может это?

HANDLE CopyImage(

HANDLE hImage, // handle to the image to copy
UINT uType, // type of image to copy
int cxDesired, // desired width of new image
int cyDesired, // desired height of new image
UINT fuFlags // copy flags

uType

Specifies the type of image to be copied. This parameter can be one of the following values:

Value Meaning
IMAGE_BITMAP Copies a bitmap.
IMAGE_CURSOR Copies a cursor.
IMAGE_ICON Copies an icon.

fuFlags

Specifies a combination of the following values:

Value Meaning
LR_COPYDELETEORG
LR_COPYRETURNORG
LR_MONOCHROME
LR_COPYFROMRESOURCE



Evgeny   (2001-11-08 07:10) [9]

>DK
Смотри-ка. А я про эту функцию и забыл как-то. Правда Monochrome, а не GrayScale, но все же.



DK   (2001-11-11 01:41) [10]

А разве Monochrome и GrayScale не одно и то же?



Evgeny   (2001-11-12 10:14) [11]

Monochrome - это черно-белая картинка, а GrayScale та же цветная, но приведенная к оттенкам серого




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.036 c
1-42436           Yakudza               2001-12-24 15:02  2002.01.14  
Редактор SQL запросов.


1-42518           Волокитин Николай     2001-12-26 15:55  2002.01.14  
Загрузка электронных таблиц в компонент F1Book.


1-42515           Simonaln              2001-12-26 11:32  2002.01.14  
Расстояние между строками в Memo


4-42608           gluka                 2001-11-13 16:57  2002.01.14  
GetModuleFileNameEx--возвращает путь, но некоторые...


1-42414           Phisio                2001-12-26 15:46  2002.01.14  
Как нарисовать прозрачный прямоугольник