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

Плагины и эффекты для Paint.NET с интерфейсом на русском языке. Поскольку этот сайт посвящен в первую очередь обсуждению Paint.NET на русском языке, то необходимость создания этого раздела очевидна. Если вы хотите опубликовать свой собственный русскоязычный эффект, то вам сюда.
Ответить
ReMake
Сообщения: 344
Зарегистрирован: 10 сен 2014, 01:25
Репутация: 108
Пол: Мужской
Откуда: Брест, Беларусь

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

Сообщение ReMake » 16 сен 2015, 23:52

Это очень простой эффект, который позволяет устранять темные или светлые участки изображения. Идеально удаляет черный или белый цвет (как частный случай темного или светлого, соответственно). Эффект доступен для paint.net версии 4.2.16 и далее.

Загрузите эффект из моего Комплекта эффектов.

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

Изображение

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

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

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

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

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

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

// Author: ReMake
// Submenu: Color
// Name:Устранить темный/светлый
// Title: Устранить темный/светлый v1.0  ReMake 2015
// Desc: Paint.Net эффект, устраняющий темные или светлые участки изображения
// Keywords: paint.net|эффект|устранить|темный|светлый
// URL: https://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;
        }
    }
}
и значок для этого эффекта: Изображение.
Последний раз редактировалось ReMake 06 апр 2021, 13:13, всего редактировалось 2 раза.
Причина: Уточнен текст

Аватара пользователя
xmario
Администратор
Сообщения: 3402
Зарегистрирован: 03 апр 2010, 20:12
Репутация: 45
Пол: Мужской
Откуда: Москва

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

Сообщение xmario » 17 сен 2015, 09:03

Интересная идея. Жалко нет примеров с результатами.
Это получается частный случай эффекта вырезать цвет?!

ReMake
Сообщения: 344
Зарегистрирован: 10 сен 2014, 01:25
Репутация: 108
Пол: Мужской
Откуда: Брест, Беларусь

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

Сообщение ReMake » 17 сен 2015, 21:02

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

Аватара пользователя
xmario
Администратор
Сообщения: 3402
Зарегистрирован: 03 апр 2010, 20:12
Репутация: 45
Пол: Мужской
Откуда: Москва

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

Сообщение xmario » 18 сен 2015, 16:51

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

ReMake
Сообщения: 344
Зарегистрирован: 10 сен 2014, 01:25
Репутация: 108
Пол: Мужской
Откуда: Брест, Беларусь

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

Сообщение ReMake » 18 сен 2015, 18:29

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

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

Аватара пользователя
xmario
Администратор
Сообщения: 3402
Зарегистрирован: 03 апр 2010, 20:12
Репутация: 45
Пол: Мужской
Откуда: Москва

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

Сообщение xmario » 19 сен 2015, 18:28

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

ReMake
Сообщения: 344
Зарегистрирован: 10 сен 2014, 01:25
Репутация: 108
Пол: Мужской
Откуда: Брест, Беларусь

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

Сообщение ReMake » 20 апр 2020, 23:48

Эффект обновлен до версии 1.1. Оба интерфейса (русский и английский) объединены в один плагин, выбор языка интерфейса осуществляется автоматически. Добавлен файл справки.

Ответить

Вернуться в «Эффекты и плагины для Paint.NET на русском языке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей