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




Вниз

TColor и RGB 


Ajax   (2001-10-31 17:50) [0]

Пишу прогу, анализирующую процентное отношение R, G и B координат в картинке. Возникли некоторые трудности.
Как из TColor выцепить отдельно R, G и B координаты. И еще, как RGB перевести в CMYK. Возиожно у кого-нибудь уже есть нароботки в этой области?



Cobalt   (2001-10-31 23:26) [1]

Насчёт RGB
Delphi Help
TColor type
If you specify TColor as a specific 4-byte hexadecimal number instead of using the constants defined in the Graphics unit, the low three bytes represent RGB color intensities for blue, green, and red, respectively. The value $00FF0000 represents full-intensity, pure blue, $0000FF00 is pure green, and $000000FF is pure red. $00000000 is black and $00FFFFFF is white.



Raptor   (2001-11-01 00:24) [2]

Привет!

2Ajax
А зачем тебе TColor. Если у тебя картинка 24-битная, то делаешь так:

type
P24BitArray=^T24BitArray;
T24BitArray=array [0..65535] of TRGBTriple;

Потом в программе делаешь так:

Var b:TBitMap;
Scan:T24BitArray;
R,G,B:=Byte;
.......................
Scan:=b.ScanLine[i];//Получаешь адрес i-вой строки изображения
//(нумеруются от 0) и накладываешь на нее свою маску.
.................................
//Здесь j-индекс элемента изображения в строке
R:=Scan[j].rgbtRed;
G:=Scan[j].rgbtGreen;
B:=Scan[j].rgbtBlue;
................................
Это самый быстрый способ извлечение составляющих цвета.
А насчет CMYk, то по этой теме полно информации в инете, надо только поискать.

Raptor.



Ajax   (2001-11-01 08:15) [3]

С RGB я вроде разобрался (GetRValue, GetGValue, GetBValue), но вот с CMYK никак не получается.

2Raptor: Инфы действительно много, а вот формулы перевода нет. Если знаешь
где, кинь линк



Mbo   (2001-11-01 08:43) [4]

C=1-R
M=1-G
Y=1-B
Однако не все однозначно (разные устройства печати, краски)
Для каждого подбираются свои поправки



nikkie   (2001-11-01 09:14) [5]

http://delphi.vitpc.com/asp/answer.asp?IDAnswer=1664



Ajax   (2001-11-01 16:09) [6]

2nikkie ну чего-то этот пример переводит, но совсем не так как Photoshop.

2Mbo что-то я не понял, c,m,y - отрицательные?



Mbo   (2001-11-01 16:17) [7]

нет, 1 - в цветовой модели - насыщенный цвет, т.е. на 255 надо заменить



nikkie   (2001-11-01 16:22) [8]

я пример не тестировал, это первое, что нашлось, когда я набрал в поиске Delphi CMYK.

если ты прочитал ответ - там написано, что однозначного перевода из RGB в CMYK не существует. соответственно, "как Photoshop" можно сделать только если знать точно алгоритм того, что Photoshop делает.

насколько мне помнится (читал про CMYK в какой-то книжке про Photoshop) у CMYK есть еще некоторые физические ограничения типа C, M не могут быть меньше 3, а Y меньше 5 (я приблизительно говорю). Возможно, Photoshop делает и на это поправку...



Ajax   (2001-11-01 16:25) [9]

2Mbo:
Ясненько, только почему везде CMYK в пределах от 0 до 100, это проценты?
И откудова K брать?



Ajax   (2001-11-01 16:28) [10]

2nikkie Я знаю про проблемы с переводом в CMYK и даже простил бы этому примеру небольшие отклонения в цвете, но цвет он мне выдает другой, СОВСЕМ!



Mbo   (2001-11-01 16:34) [11]

>пределах от 0 до 100, это проценты
ну да
>откудова K брать
ссылку от nikkie посмотрел? Там есть.
еще раз уточню, что CMYK подгоняется под конкретную систему печати, т.е посчитав CMY по простым формулам, не получим при печати точного воспроизведения - это связано с тем, что RGB - модель для источника света -монитора, а CMY - для отражающе-поглощающей поверхности - бумаги.
И К-черный вводят искусственно, поскольку смесь красителей дает грязно-серый, а не черный цвет



Ajax   (2001-11-01 16:47) [12]

>ссылку от nikkie посмотрел?
А ты??? Там ОЧЕНЬ приблизительный, если можно так сказать, перевод.




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




Наверх





Память: 0.74 MB
Время: 0.027 c
1-22120           Leviathan             2001-12-19 22:26  2002.01.08  
Библиотеки иконок


14-22385          модератор             2001-11-03 11:57  2002.01.08  
>To Merlin - (SYSTRAY)


1-22071           KAA                   2001-12-19 10:48  2002.01.08  
Два сервиса мешают друг другу.


3-21980           Aleksandr             2001-12-05 13:26  2002.01.08  
Как в программе сформировать connection string TADOConnection?


14-22371          Дремучий              2001-11-08 17:11  2002.01.08  
Жизнь после смерти?