![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TColor и RGB
Ajax © (2001-10-31 17:50:00)Пишу прогу, анализирующую процентное отношение R, G и B координат в картинке. Возникли некоторые трудности.
Как из TColor выцепить отдельно R, G и B координаты. И еще, как RGB перевести в CMYK. Возиожно у кого-нибудь уже есть нароботки в этой области?
Ajax (2001-11-01 16:47:00) [1]>ссылку от nikkie посмотрел?
А ты??? Там ОЧЕНЬ приблизительный, если можно так сказать, перевод.
Mbo (2001-11-01 16:34:00) [2]>пределах от 0 до 100, это проценты
ну да
>откудова K брать
ссылку от nikkie посмотрел? Там есть.
еще раз уточню, что CMYK подгоняется под конкретную систему печати, т.е посчитав CMY по простым формулам, не получим при печати точного воспроизведения - это связано с тем, что RGB - модель для источника света -монитора, а CMY - для отражающе-поглощающей поверхности - бумаги.
И К-черный вводят искусственно, поскольку смесь красителей дает грязно-серый, а не черный цвет
Ajax (2001-11-01 16:28:00) [3]2nikkie Я знаю про проблемы с переводом в CMYK и даже простил бы этому примеру небольшие отклонения в цвете, но цвет он мне выдает другой, СОВСЕМ!
Ajax (2001-11-01 16:25:00) [4]2Mbo:
Ясненько, только почему везде CMYK в пределах от 0 до 100, это проценты?
И откудова K брать?
nikkie (2001-11-01 16:22:00) [5]я пример не тестировал, это первое, что нашлось, когда я набрал в поиске Delphi CMYK.
если ты прочитал ответ - там написано, что однозначного перевода из RGB в CMYK не существует. соответственно, "как Photoshop" можно сделать только если знать точно алгоритм того, что Photoshop делает.
насколько мне помнится (читал про CMYK в какой-то книжке про Photoshop) у CMYK есть еще некоторые физические ограничения типа C, M не могут быть меньше 3, а Y меньше 5 (я приблизительно говорю). Возможно, Photoshop делает и на это поправку...
Mbo (2001-11-01 16:17:00) [6]нет, 1 - в цветовой модели - насыщенный цвет, т.е. на 255 надо заменить
Ajax (2001-11-01 16:09:00) [7]2nikkie ну чего-то этот пример переводит, но совсем не так как Photoshop.
2Mbo что-то я не понял, c,m,y - отрицательные?
nikkie (2001-11-01 09:14:00) [8]http://delphi.vitpc.com/asp/answer.asp?IDAnswer=1664
Mbo (2001-11-01 08:43:00) [9]C=1-R
M=1-G
Y=1-B
Однако не все однозначно (разные устройства печати, краски)
Для каждого подбираются свои поправки
Ajax (2001-11-01 08:15:00) [10]С RGB я вроде разобрался (GetRValue, GetGValue, GetBValue), но вот с CMYK никак не получается.
2Raptor: Инфы действительно много, а вот формулы перевода нет. Если знаешь
где, кинь линк
Raptor (2001-11-01 00:24:00) [11]Привет!
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.
Cobalt (2001-10-31 23:26:00) [12]Насчёт 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.