Страница 1 из 1

Устранить темный/светлый

Добавлено: 16 сен 2015, 23:52
ReMake
Это очень простой эффект, который позволяет устранять темные или светлые участки изображения. Идеально удаляет черный или белый цвет (как частный случай темного или светлого, соответственно).

Эффект имеет очень простой интерфейс. Вы можете найти его в меню Эффекты -> Color -> Устранить темный/светлый.

Изображение

Примеры работы.

Исходное изображение:
Изображение

Устранение темных участков:
Изображение

Устранение светлых участков:
Изображение

Ниже приведен исходный код для CodeLab

Код: Выделить всё

// Author: ReMake
// Submenu: Color
// Name:Устранить темный/светлый
// Title: Устранить темный/светлый v1.0  ReMake 2015
// Desc: Paint.Net эффект, устраняющий темные или светлые участки изображения
// Keywords: paint.net|эффект|устранить|темный|светлый
// URL: http://paint-net.ru/forum/viewforum.php?f=5
#region UICode
byte Amount1 = 0; // [1] Устранить|Темный|Светлый
#endregion

void Render(Surface dst, Surface src, Rectangle rect)
{
    ColorBgra CurrentPixel;
    for (int y = rect.Top; y < rect.Bottom; y++)
    {
        if (IsCancelRequested) return;
        for (int x = rect.Left; x < rect.Right; x++)
        {
            CurrentPixel = src[x,y];
            int R = CurrentPixel.R;
            int G = CurrentPixel.G;
            int B = CurrentPixel.B;
            int A = CurrentPixel.A;
            
            if (A != 0)
		{
                  switch (Amount1)
                  {
                    case 0: // Темный
                        A = Math.Max(Math.Max(R, G), B);
                        break;
                
                    case 1: // Светлый
                        A = 255 - Math.Min(Math.Min(R, G), B);
                        break;
                  };
	}
            
            CurrentPixel.A = Int32Util.ClampToByte(A);            
            
            dst[x,y] = CurrentPixel;
        }
    }
}
и значок для этого эффекта: Изображение.

Re: Устранить темный/светлый

Добавлено: 17 сен 2015, 09:03
xmario
Интересная идея. Жалко нет примеров с результатами.
Это получается частный случай эффекта вырезать цвет?!

Re: Устранить темный/светлый

Добавлено: 17 сен 2015, 21:02
ReMake
xmario писал(а):Интересная идея. Жалко нет примеров с результатами.
Завтра я загружу примеры в первое сообщение. Примеры работы эффекта можно посмотреть в устаревшей теме Eliminate Black/Eliminate White (obsolete) форума getpaint.net.
xmario писал(а):Это получается частный случай эффекта вырезать цвет?!
Алгоритмы работы обоих эффектов разные, но применительно к черному или белому цвету, можно считать частным случаем. Эффект Устранить темный/светлый работает только с прозрачной составляющей цветов, независимо от яркости прозрачности.

Re: Устранить темный/светлый

Добавлено: 18 сен 2015, 16:51
xmario
Согласен, что как пример создания эффекта - это здорово!
В части же использования, практическая польза от этого эффекта весьма сомнительна. Прошу прощения у автора за этот вывод, :oops: но в paint.net есть инструмент волшебная палочка, который делает все тоже самое. :-D

Re: Устранить темный/светлый

Добавлено: 18 сен 2015, 18:29
ReMake
xmario писал(а):Согласен, что как пример создания эффекта - это здорово!
В части же использования, практическая польза от этого эффекта весьма сомнительна.
Отзывы о полезности эффекта смотрите в теме Eliminate Dark/Light и в устаревшей теме Eliminate Black/Eliminate White (obsolete) на форуме getpaint.net.

Волшебная палочка создает область выделения, которую вы потом можете вырезать, создав в этой области прозрачность с максимальной яркостью. Мой эффект устраняет темные (светлые) участки, вычитая из них максимальную (минимальную) составляющую одного из трех компонентов цвета (RGB), и не затрагивает яркость абсолютно прозрачных участков.

Re: Устранить темный/светлый

Добавлено: 19 сен 2015, 18:28
xmario
Ура! Вот с рисунками стало понятнее. Снимаю свое предыдущее замечание про волшебную палочку. Писал его, когда еще не было рисунков. :oops: