Изменение прозрачности

Плагины и эффекты для Paint.NET с интерфейсом на русском языке. Поскольку этот сайт посвящен в первую очередь обсуждению Paint.NET на русском языке, то необходимость создания этого раздела очевидна. Если вы хотите опубликовать свой собственный русскоязычный эффект, то вам сюда.
Ответить
Аватара пользователя
xmario
Администратор
Сообщения: 3378
Зарегистрирован: 03 апр 2010, 20:12
Репутация: 32
Пол: Мужской
Откуда: Москва

Изменение прозрачности

Сообщение xmario » 11 июл 2010, 16:55

Эффект для paint.net для изменения прозрачности изображения

Эффект paint.net для изменения уровня прозрачности изображения.

Основное назначение этого эффекта - изменять значение прозрачности пикселей на изображении. Окно настроек этого эффекта выглядит так, как на рисунке ниже.

Изображение

Два основных верхних параметра определяют два способа изменения прозрачности.

Параметр "Умножить на коэффициент" задает коэффициент на который будет умножено значение прозрачности (альфа) у всех пикселей изображения. Если значение этого параметра меньше 1, то прозрачность на изображении будет уменьшена. Если значение параметра больше 1, то уровень прозрачности будет увеличен. Значение этого параметра по умолчанию равно 1, т.е. ничего не происходит.

Параметр "Увеличить на" определяет число которое будет прибавлено к текущему уровню прозрачности пикселей на изображении. Если значение этого параметра положительное, то уровень прозрачности увеличится. Если значение отрицательное, то прозрачность у всех точек изображения уменьшится на это число. Значение этого параметра по умолчанию равно 0, т.е. ничего не происходит.

Галочка - "Прозрачность по черно-белому рисунку" позволяет перевести изображение в один цвет с разным уровнем прозрачности. Т.е. если у вас есть цветное или черно-белое изображение, то после применения этого эффекта оно станет нарисованным одним цветом. Темные участки изображения будут более прозрачными, а светлые участки менее прозрачными. В качестве цвета используется цвет, выбранный дополнительным в палитре цветов paint.net. Почему дополнительный, а не основной? Потому, что мне показалось более логичным делать белые рисунки, а белый цвет по умолчанию установлен в палитре paint.net как дополнительный.

Несколько примеров применения эффектов.

Используем для примера вот такую исходную фотографию.

Изображение

Если создать новый слой, заполнить его черным цветом, а потом применить к слою с фотографией эффект "Изменить прозрачность" с включенной галочкой "Прозрачность по черно-белому рисунку". То получится вот такой рисунок. Вам кажется, что рисунок просто стал черно-белым? Нет! Попробуйте изменить черный цвет на слое ниже на какой-нибудь другой. ;)

Изображение

Для большей наглядности на рисунке ниже можно увидеть, что будет, если вместо черного слоя поместить исходную фотографию.

Изображение

А вот такой результат получится у плагина "Изменение прозрачности", если дополнительно воспользоваться параметрами изменения прозрачности, здесь коэффициент ~2, а второй параметр отрицательный.

Изображение
Вложения
xmario_alpha.rar
Скачать эффект для paint.net "Изменение прозрачности"
(4.5 КБ) 2408 скачиваний

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

Исходный код эффекта Изменение прозрачности

Сообщение xmario » 11 июл 2010, 16:57

Для тех, кому интересно, ниже привожу исходный код эффекта paint.net "Изменение прозрачности" для CodeLab.

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

#region UICode
double Amount1 = 1; // [0,50] Умножить на коэффициент
int Amount2 = 0; // [-100,100] Увеличить на
bool Amount3 = false; // [0,1] Прозрачность по черно-белому рисунку
#endregion

void Render(Surface dst, Surface src, Rectangle rect)
{
    // Delete any of these lines you don't need
    Rectangle selection = this.EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt();
    ColorBgra SecondaryColor = (ColorBgra)EnvironmentParameters.SecondaryColor;

    ColorBgra CurrentPixel;
    for (int y = rect.Top; y < rect.Bottom; y++)
    {
        for (int x = rect.Left; x < rect.Right; x++)
        {
            CurrentPixel = src[x,y];
            if (CurrentPixel.A > 0)
            {
               if (Amount3 == true)
               { 
                   CurrentPixel.A = (byte)(int)((CurrentPixel.R+CurrentPixel.G+CurrentPixel.B)/3);
                   CurrentPixel.R = (byte)SecondaryColor.R;
                   CurrentPixel.G = (byte)SecondaryColor.G;
                   CurrentPixel.B = (byte)SecondaryColor.B;
               } 
               int alpha = CurrentPixel.A;
               alpha = (int)(CurrentPixel.A*Amount1 + Amount2);
               if (alpha > 255) {alpha = 255;}
               if (alpha < 0) {alpha = 0;}
               CurrentPixel.A = (byte) alpha; 
            }
            dst[x,y] = CurrentPixel;
        }
    }
}

Schumi
Сообщения: 7
Зарегистрирован: 11 мар 2014, 15:03
Репутация: 0
Пол: Мужской

Re: Изменение прозрачности

Сообщение Schumi » 15 ноя 2014, 15:02

Ох, спасибо тебе добрый человек. Хороший плагин.

Ответить

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

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

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