version_2.0 Ответов: 2

Как сделать"цветовой баланс изображения" (например, photoshop) в C# динамически..


Всем Привет,

Мне нужно изменить цвета на изображении, но как "цветовой баланс" в photoshop


Я использовал этот код:


Bitmap bmp = new Bitmap(this.BackgroundImage);
for (int x = 0; x < bmp.Width; x++)
{
    for (int y = 0; y < bmp.Height; y++)
    {
          bmp.SetPixel(x, y, Color.Black);
        
    }
}

this.BackgroundImage = bmp;



но все цвета в моем изображении изменились на черный...

Как я могу решить эту проблему цветового баланса?..

Пожалуйста помочь.

заранее спасибо.

Sergey Alexandrovich Kryukov

Существует множество различных операций для повторного касания цветового баланса, дающих различные результаты на основе различных данных. Какой из них вам нужен? Все они?
--СА

version_2.0

Пожалуйста, помогите, я совершенно ничего об этом не знаю..

Дайте мне ссылку на учебник для этого...

2 Ответов

Рейтинг:
2

dynamichael

Я дважды пытался ответить. Несмотря на то, что мой ответ давал прямое решение проблемы, как было заявлено ОП, он был удален-дважды-помечен как не ответ без объяснения причин. Так что для тех, кто ищет реальный ответ на эту проблему,вам просто не повезло. Поблагодарите своих коллег-участников сайта.


Shahin Khorshidnia

Здравствуйте, на вашем месте я бы не стал заниматься пустяками.

Shahin Khorshidnia

Члены ОК 11425182, Спасибо за совет.

Рейтинг:
12

Sergey Alexandrovich Kryukov

Хорошо, теперь я вижу, что вы используете System.Drawing. По соображениям производительности никогда не используйте SetPixeл/GetPixel! Используйте System.Drawing.Bitmap.LockBits На странице справки MSDN есть пример кода:
http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx[^].

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

—СА