Изменить оттенок растрового изображения, но сохранить цвет фона?

Я экспериментировал с примером Change HUE/Saturation, найденным на веб-сайте EFG: http://www.efg2.com/Lab/Library/Delphi/Graphics /Color.htm

enter image description here

Я хочу использовать методы, найденные в этом примере, для изменения значений цвета некоторых растровых изображений (для использования в TImage). Есть одна проблема, с которой я сталкиваюсь, и это с TImages, которые имеют прозрачные растровые изображения; Я не хочу, чтобы цвет фона менял свой оттенок, а просто фактические данные изображения.

Возьмите этот образец изображения, с которым мы можем работать (хотя можно использовать любое изображение с прозрачностью):

enter image description here

  • Загрузите демо-версию Change HUE/Saturationпо ссылке вверху.
  • Теперь загрузите изображение кнопки выше в ImageOriginal.
  • Установите дельта-насыщенность на 1.
  • Запустите проект.

Некоторые выходные результаты:

enter image description hereenter image description here

Здесь я хотел бы сохранить исходный цвет фона (определяемый крайним нижним левым пикселем) и отрегулировать оттенок только для остальной части изображения. Таким образом, результаты вывода на самом деле будут выглядеть следующим образом (отредактировано в Paint.NET):

enter image description hereenter image description here

Позвольте мне использовать для тестирования другой образец изображения, который содержит больше данных изображения:

enter image description here

Как и в случае с первым образцом изображения, результаты может быть что-то вроде:

enter image description hereenter image description here

Когда желаемые результаты должны быть такими:

enter image description hereenter image description here

У меня была идея после изменения ОТТЕНКА заменить крайний левый нижний цвет цветом из оригинала, но я не уверен, что это правильный подход или нет, и даже если это так, я не уверен, как заменить цвет X на другой цвет. (Графика и математика выше моего понимания).

Например, если я нарисовал два круга синего цвета на ухе Микки (синий был исходным прозрачным цветом от нижнего левого крайнего пикселя), а также покрасил его глаза:

enter image description here

Повторное изменение ОТТЕНКА может выглядеть так:

enter image description here

когда на самом деле это должно быть так:

enter image description here

Проще говоря, я хотел бы изменить оттенок изображения, будь то методы, используемые в демонстрации EFG, или другое решение. Прозрачный цвет, определяемый самым нижним левым пикселем, не должен изменяться при изменении оттенка, он должен оставаться таким же, как показано на примерах изображений.

Как изменить оттенок растрового изображения, сохранив цвет фона?

5
задан 16 May 2012 в 16:06
поделиться