Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизПоиск цвета на битмапе Найти похожие ветки
← →
novichek (2012-04-12 20:55) [0]Подскажите пожалуйста, есть битмап.
в режиме transparent я рисую разным цветом разный текст.
в дальнейшем мне нужно найти текст, отрисованный определенным цветом и изменить цвет на другой.
сделал поиск нужного цвета типа:
разлаживаю нужный TColor на на цвета ColorR(G,B)
сканирую битмап и проверяю на свой цвет
result:= (BMPLine[x].rgbRed = ColorR) or (BMPLine[x].rgbGreen = ColorG) or (BMPLine[x].rgbBlue = ColorB);
столкнулся с проблемой, что при выводе например красным цветом в режиме transparent на битмапе текст отрисовывается по краям чуть другим цветом чем красным и в дальнейшем я его при поиске не нахожу и в результате не меняю.
попробывал сделать что-то типа:
const
myABS = 5;
result:= (abs(BMPLine[x].rgbRed - ColorR) < myABS) and (abs(BMPLine[x].rgbGreen - ColorG) < myABS) and (abs(BMPLine[x].rgbBlue - ColorB) < myABS);
думал так же буду отлавливать цвет который рядом где то, но нифига.
после смены например красного цвета по краям все равно видны почти красный цвет.
подскажите пожалуйста, как можно отловить рядом расположенные цвета? не знаю как правильно сказать, но думаю что поняли... :)
← →
Jeer © (2012-04-12 21:25) [1]
> как можно отловить
Более не привередливой "мышеловкой".
← →
Омлет © (2012-04-12 21:26) [2]Текст рисуется со сглаживанием, которое установлено в системе.
Лучше пересмотрите задачу и методику решения.
← →
novichek (2012-04-12 21:34) [3]что значит пересмотреть задачу?
задача одна.
есть у меня битмап с отрисованным текстом.
мне нужно изменить цвет один на другой.
значит я неверно думал что это тривиальная задача найти примерно похожие цвета ..
← →
novichek (2012-04-12 21:39) [4]ну а вообще, еасли есть два цвета: TColor1 и TColor2
как определить TColor3 к какому цвету ближе относиться к 1 или 2?
в целом алгоритм какой?
проверять разницу в каждом цвете и в сумме где эта разница будет меньше значит ближе.. так?
← →
Dimka Maslov © (2012-04-12 21:52) [5]В целом даже фотошоп при замене цвета иногда ошибается по краям. Решений проблемы может несколько:
1. Векторизация - картинка каждый раз перерисоывается полностью в новом цвете.
2. Переход из цветового пространства RGB в цветовое пространство HSL, там проще выделять и менять "похожие цвета".
← →
Омлет © (2012-04-12 22:07) [6]> что значит пересмотреть задачу?
Ну вот вы пишете "в режиме transparent я рисую разным цветом разный текст." - если вы сами рисуете, то и координаты можете запомнить, а не просто цвет? Лучше опишите изначальную задачу, что и зачем.
← →
novichek (2012-04-12 22:13) [7]рисую текст с тенью путем отрисовки два раза текста, со смещением.
в дальнейшем часть текста нужно залить другим цветом.
я знаю цвет фона, цвет тени и цвет текста. так же позицию по x до которой нужно закрасить другим цветом текст.
было бы два цвета я бы просто искал цвет не похожий на цвет фона.
но тут тень есть, нужно как-то определить что пиксель ближе к цвету текста и его заменить на новый цвет.
это что то по самой идее похожее на закраску текста в караоке.
заранее спасибо!
← →
Jeer © (2012-04-12 22:21) [8]
> похожее на закраску текста в караоке.
Я-то, думал, что караоке - это там, где поют, а оказывается - там текст закрашивают. Да и то - какие сейчас тексты.
← →
novichek (2012-04-12 22:26) [9]Jeer ©, не хочется вам хамить, но вы мудила ещё тот!
← →
Омлет © (2012-04-12 22:27) [10]
> novichek (12.04.12 22:13) [7]
Нужно просто рисовать 2 варианта - в изначальном цвете на конечную картинку, а другим цветов - в памяти (во временном растре), но тем же шрифтом и размером. Затем просто копировать часть временной картинки на конечную, ограничивая нужным x - получится эффект перекрашивания.
← →
novichek (2012-04-12 22:33) [11]Омлет ©, спасибо сейчас попробую!
проверю только вариант через beginpath.. fillpath с контуром в пиксель.
может он не размоет цвет текста..
← →
novichek (2012-04-12 23:24) [12]Омлет © Спасибо! Ваше решение оказалось самое оптимальное...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.084 c