Использование ColorMatrix для перекраски System.Drawing.Image - PullRequest
1 голос
/ 28 января 2012

Я пытаюсь разработать простой метод расширения настройки изображения, который имеет такую ​​подпись:

static Alter(this System.Drawing.Image, Color original, Color result);

Я хочу заполнить алгоритм цветом текущего изображения, а затем преобразовать его в result цвет.Так что если я передам в img.Alter (фиолетовый, желтый), все изображение будет смещено в сторону желтого.У меня это работает по большей части, и я могу делать статические преобразования, такие как шкала яркости и инверсия, но динамическое изменение ставит меня в тупик.

Моя главная проблема заключается в том, как определить «разницу» в цвете и затем применитьэто в формате RGB ColorMatrix.У меня есть конвертер HueSaturationBrightness, так что я мог бы потенциально кое-что сделать со значениями GetHue (), GetSaturation () и GetBrightness (), переданными в цветах.

Я пытаюсь использовать 40, 41 и 42индексы ColorMatrix для добавления / вычитания компонентов к красным, зеленым и синим компонентам исходного изображения / цвета.Кажется, я не могу понять это правильно.

Каков наилучший способ определения процентной разницы RGB для двух изображений с использованием HSB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...