Форум paint.net на русском языке
Основные размытия
- xmario
- Администратор
- Сообщения: 3402
- Зарегистрирован: 03 апр 2010, 20:12
- Репутация: 45
- Пол: Мужской
- Откуда: Москва
Основные размытия
Предлагаю вашему вниманию плагин «Основные размытия».
15.03.2011 Выпущена версия 2.2 плагина "Основные размытия (xMario)" Добавлена опция Toon.
Скачать файл с эффектами можно по ссылке внизу этой темы. О том, как устанавливать эффекты для Paint.NET можно прочитать на этом сайте. После установки эффект доступен в меню «Эффекты» - «Размытие».
Этот плагин для Paint.NET объединяет несколько эффектов размытия, точнее все известные мне формулы размытия. Некоторые способы имеют пока условные названия, например «Заострение 1» или «Заострение 2».
Необходимость создания этого эффекта возникла из-за необходимости сглаживания контура для эффекта окружность с заданным радиусом. Понравившиеся мне результаты я добавлю в эффект окружность, который появится здесь в ближайшее время.
Вы можете поучаствовать в улучшении этого эффекта, поэтому если у вас есть какие-нибудь предложения или пожелания, оставляйте их здесь.
Вот несколько примеров применения эффекта.
Для тех, кто привык пользоваться английской терминологией:
размытие = blur
заострение = sharpen
выделение краев = edge detection
рельефность = emboss
диагональное разбиение = diagonal shatter
горизонтальное размытие = horizontal motion blur
15.03.2011 Выпущена версия 2.2 плагина "Основные размытия (xMario)" Добавлена опция Toon.
Скачать файл с эффектами можно по ссылке внизу этой темы. О том, как устанавливать эффекты для Paint.NET можно прочитать на этом сайте. После установки эффект доступен в меню «Эффекты» - «Размытие».
Этот плагин для Paint.NET объединяет несколько эффектов размытия, точнее все известные мне формулы размытия. Некоторые способы имеют пока условные названия, например «Заострение 1» или «Заострение 2».
Необходимость создания этого эффекта возникла из-за необходимости сглаживания контура для эффекта окружность с заданным радиусом. Понравившиеся мне результаты я добавлю в эффект окружность, который появится здесь в ближайшее время.
Вы можете поучаствовать в улучшении этого эффекта, поэтому если у вас есть какие-нибудь предложения или пожелания, оставляйте их здесь.
Вот несколько примеров применения эффекта.
Для тех, кто привык пользоваться английской терминологией:
размытие = blur
заострение = sharpen
выделение краев = edge detection
рельефность = emboss
диагональное разбиение = diagonal shatter
горизонтальное размытие = horizontal motion blur
- Вложения
-
- xmario_blurs_2_2.rar
- Эффект для Paint.NET "Основные размытия" 2.2
- (6.03 КБ) 2290 скачиваний
-
- xmario_blurs.rar
- Эффект для Paint.NET "Основные размытия" 2.0 (старая версия)
- (5.44 КБ) 1536 скачиваний
paint.net - это бесплатный графический редактор - где бесплатно скачать paint.net - как установить эффекты и плагины в paint.net, где скачать inkscape и уроки inkscape
- BorzoyExist
- Сообщения: 87
- Зарегистрирован: 04 апр 2010, 19:42
- Репутация: 0
- Откуда: Петербург
- Контактная информация:
Re: Основные размытия
Жалко но при смене типа размытия у меня он выдаёт ошибку
- xmario
- Администратор
- Сообщения: 3402
- Зарегистрирован: 03 апр 2010, 20:12
- Репутация: 45
- Пол: Мужской
- Откуда: Москва
Re: Основные размытия
Текст ошибки огласите?
paint.net - это бесплатный графический редактор - где бесплатно скачать paint.net - как установить эффекты и плагины в paint.net, где скачать inkscape и уроки inkscape
- BorzoyExist
- Сообщения: 87
- Зарегистрирован: 04 апр 2010, 19:42
- Репутация: 0
- Откуда: Петербург
- Контактная информация:
Re: Основные размытия
Это правда от основных цветовых эффектов, но у меня полюбому все ломаются
Файл: C:\Program Files (x86)\Paint.NET\Effects\xmario_basic_color_effects.dll
Имя: xmario_basic_color_effectsEffect.xmario_basic_color_effectsEffectPlugin
Версия: 1.0.3771.23332
Автор: XMario
Copyright: Copyright © XMario
Вебсайт: https://paint-net.ru/
Полное сообщение об ошибке: PaintDotNet.WorkerThreadException: Worker thread threw an exception ---> System.TypeLoadException: Не удалось загрузить тип "PaintDotNet.Int32Util" из сборки "PaintDotNet.Base, Version=3.36.3158.38062, Culture=neutral, PublicKeyToken=null".
в xmario_basic_color_effectsEffect.xmario_basic_color_effectsEffectPlugin.Render(Surface dst, Surface src, Rectangle rect)
в xmario_basic_color_effectsEffect.xmario_basic_color_effectsEffectPlugin.OnRender(Rectangle[] rois, Int32 startIndex, Int32 length)
в PaintDotNet.Effects.Effect`1.Render(Rectangle[] renderRects, Int32 startIndex, Int32 length)
в PaintDotNet.Effects.Effect`1.Render(EffectConfigToken parameters, RenderArgs dstArgs, RenderArgs srcArgs, Rectangle[] rois, Int32 startIndex, Int32 length)
в PaintDotNet.Effects.BackgroundEffectRenderer.ThreadFunction()
--- Конец трассировки внутреннего стека исключений ---
в PaintDotNet.Effects.BackgroundEffectRenderer.Join()
в PaintDotNet.Effects.BackgroundEffectRenderer.Abort()
в PaintDotNet.Effects.BackgroundEffectRenderer.Start()
в PaintDotNet.Menus.EffectMenuBase.<>c__DisplayClassb.<RunEffect>b__8(Object sender, EventArgs e)
Файл: C:\Program Files (x86)\Paint.NET\Effects\xmario_basic_color_effects.dll
Имя: xmario_basic_color_effectsEffect.xmario_basic_color_effectsEffectPlugin
Версия: 1.0.3771.23332
Автор: XMario
Copyright: Copyright © XMario
Вебсайт: https://paint-net.ru/
Полное сообщение об ошибке: PaintDotNet.WorkerThreadException: Worker thread threw an exception ---> System.TypeLoadException: Не удалось загрузить тип "PaintDotNet.Int32Util" из сборки "PaintDotNet.Base, Version=3.36.3158.38062, Culture=neutral, PublicKeyToken=null".
в xmario_basic_color_effectsEffect.xmario_basic_color_effectsEffectPlugin.Render(Surface dst, Surface src, Rectangle rect)
в xmario_basic_color_effectsEffect.xmario_basic_color_effectsEffectPlugin.OnRender(Rectangle[] rois, Int32 startIndex, Int32 length)
в PaintDotNet.Effects.Effect`1.Render(Rectangle[] renderRects, Int32 startIndex, Int32 length)
в PaintDotNet.Effects.Effect`1.Render(EffectConfigToken parameters, RenderArgs dstArgs, RenderArgs srcArgs, Rectangle[] rois, Int32 startIndex, Int32 length)
в PaintDotNet.Effects.BackgroundEffectRenderer.ThreadFunction()
--- Конец трассировки внутреннего стека исключений ---
в PaintDotNet.Effects.BackgroundEffectRenderer.Join()
в PaintDotNet.Effects.BackgroundEffectRenderer.Abort()
в PaintDotNet.Effects.BackgroundEffectRenderer.Start()
в PaintDotNet.Menus.EffectMenuBase.<>c__DisplayClassb.<RunEffect>b__8(Object sender, EventArgs e)
- xmario
- Администратор
- Сообщения: 3402
- Зарегистрирован: 03 апр 2010, 20:12
- Репутация: 45
- Пол: Мужской
- Откуда: Москва
Re: Основные размытия
Я так и думал. Проблемы в версии 3.3. Ответ здесь.
paint.net - это бесплатный графический редактор - где бесплатно скачать paint.net - как установить эффекты и плагины в paint.net, где скачать inkscape и уроки inkscape
- BorzoyExist
- Сообщения: 87
- Зарегистрирован: 04 апр 2010, 19:42
- Репутация: 0
- Откуда: Петербург
- Контактная информация:
Re: Основные размытия
Да говорю же не устанавливается!!
- xmario
- Администратор
- Сообщения: 3402
- Зарегистрирован: 03 апр 2010, 20:12
- Репутация: 45
- Пол: Мужской
- Откуда: Москва
Re: Основные размытия
Заводи тему в "обсуждение Paint.NET" давай решать проблему. Использовать старые версии - это не спортивно!
paint.net - это бесплатный графический редактор - где бесплатно скачать paint.net - как установить эффекты и плагины в paint.net, где скачать inkscape и уроки inkscape
- BorzoyExist
- Сообщения: 87
- Зарегистрирован: 04 апр 2010, 19:42
- Репутация: 0
- Откуда: Петербург
- Контактная информация:
- xmario
- Администратор
- Сообщения: 3402
- Зарегистрирован: 03 апр 2010, 20:12
- Репутация: 45
- Пол: Мужской
- Откуда: Москва
Re: Основные размытия
Исходный код плагина Основные размытия xMario версии 2.2
Код: Выделить всё
// Submenu: Blurs
// Name: Основные размытия (Xmario)
// Author: XMario
// Title: http://paint-net.ru - Основные размытия - 2.2
// URL: https://paint-net.ru/
#region UICode
byte Amount1 = 18; // Тип смягчения|Смягчение smooth|Смягчение soften|Смягчение blur|Размытие Гаусса|Заострение 1|Заострение 2|Заострение 3|Заострение 4|Заострение 5|выделение краев 1|выделение краев 2|выделение краев 3|рельефность 1|рельефность 2|рельефность 3|рельефность 4|Диагональное разбиение|Горизонтальное размытие|Toon
int Amount2 = 2; // [2,50] Радиус
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 CurrentPixel;
int radius = Amount2;
int delta = 0;
int delta_sum = 0;
int[,] matrix = new int[radius*2+1,radius*2+1];
if (Amount1==0)
{
//Смягчение smooth
matrix[0,0]=0;matrix[0,1]=0;matrix[0,2]=0;matrix[0,3]=0;matrix[0,4]=0;
matrix[1,0]=0;matrix[1,1]=1;matrix[1,2]=3;matrix[1,3]=1;matrix[1,4]=0;
matrix[2,0]=0;matrix[2,1]=3;matrix[2,2]=9;matrix[2,3]=3;matrix[2,4]=0;
matrix[3,0]=0;matrix[3,1]=1;matrix[3,2]=3;matrix[3,3]=1;matrix[3,4]=0;
matrix[4,0]=0;matrix[4,1]=0;matrix[4,2]=0;matrix[4,3]=0;matrix[4,4]=0;
}
else if (Amount1==1)
{
//Смягчение soften
for (int i=0; i<=(radius*2); i++)
for (int j=0; j<=(radius*2); j++)
{
matrix[i,j]=1;
}
}
else if (Amount1==2)
{
//Смягчение blur
matrix[0,0]=0;matrix[0,1]=1;matrix[0,2]=2;matrix[0,3]=1;matrix[0,4]=0;
matrix[1,0]=1;matrix[1,1]=3;matrix[1,2]=10;matrix[1,3]=3;matrix[1,4]=1;
matrix[2,0]=2;matrix[2,1]=10;matrix[2,2]=90;matrix[2,3]=10;matrix[2,4]=2;
matrix[3,0]=1;matrix[3,1]=3;matrix[3,2]=10;matrix[3,3]=3;matrix[3,4]=1;
matrix[4,0]=0;matrix[4,1]=1;matrix[4,2]=2;matrix[4,3]=1;matrix[4,4]=0;
}
if (Amount1==3)
{
//Размытие Гаусса
for (int i=0; i<=(radius*2); i++)
for (int j=0; j<=(radius*2); j++)
{
int temp = radius - Math.Abs(radius-i) - 2*Math.Abs(radius-j);
if (temp>0) {matrix[i,j]=temp;} else {matrix[i,j]=0;}
}
}
if (Amount1==4)
{
//Заострение 1
for (int i=0; i<=(radius*2); i++)
for (int j=0; j<=(radius*2); j++)
{
matrix[i,j]=0;
}
matrix[radius-1,radius-1]=-radius;matrix[radius-1,radius]=-3*radius;matrix[radius-1,radius+1]=-radius;
matrix[radius,radius-1]=-3*radius;matrix[radius,radius]=-41*radius;matrix[radius,radius+1]=-3*radius;
matrix[radius+1,radius-1]=-radius;matrix[radius+1,radius]=-3*radius;matrix[radius+1,radius+1]=-radius;
}
if (Amount1==5)
{
//Заострение 2
for (int i=0; i<=(radius*2); i++)
for (int j=0; j<=(radius*2); j++)
{
matrix[i,j]=-1;
}
}
if (Amount1==6)
{
//Заострение 3
matrix[0,0]=-1;matrix[0,1]=-1;matrix[0,2]=-1;matrix[0,3]=-1;matrix[0,4]=-1;
matrix[1,0]=-1;matrix[1,1]=3;matrix[1,2]=4;matrix[1,3]=3;matrix[1,4]=-1;
matrix[2,0]=-1;matrix[2,1]=-1;matrix[2,2]=13;matrix[2,3]=4;matrix[2,4]=-1;
matrix[3,0]=-1;matrix[3,1]=4;matrix[3,2]=4;matrix[3,3]=3;matrix[3,4]=-1;
matrix[4,0]=-1;matrix[4,1]=-1;matrix[4,2]=-1;matrix[4,3]=-1;matrix[4,4]=-1;
}
if (Amount1==7)
{
//Заострение 4
for (int i=0; i<=(radius*2); i++)
for (int j=0; j<=(radius*2); j++)
{
matrix[i,j]=0;
}
matrix[radius-1,radius-1]=-radius;matrix[radius-1,radius]=-radius;matrix[radius-1,radius+1]=-radius;
matrix[radius,radius-1]=-radius;matrix[radius,radius]=radius*8;matrix[radius,radius+1]=-radius;
matrix[radius+1,radius-1]=-radius;matrix[radius+1,radius]=-radius;matrix[radius+1,radius+1]=-radius;
delta_sum = 1;
}
if (Amount1==8)
{
//Заострение 5
matrix[0,0]=0;matrix[0,1]=0;matrix[0,2]=0;matrix[0,3]=0;matrix[0,4]=0;
matrix[1,0]=0;matrix[1,1]=1;matrix[1,2]=-2;matrix[1,3]=1;matrix[1,4]=0;
matrix[2,0]=0;matrix[2,1]=-2;matrix[2,2]=5;matrix[2,3]=-2;matrix[2,4]=0;
matrix[3,0]=0;matrix[3,1]=1;matrix[3,2]=-2;matrix[3,3]=1;matrix[3,4]=0;
matrix[4,0]=0;matrix[4,1]=0;matrix[4,2]=0;matrix[4,3]=0;matrix[4,4]=0;
}
//выделение краев 1
if (Amount1==9)
{
matrix[0,0]=0;matrix[0,1]=0;matrix[0,2]=0;matrix[0,3]=0;matrix[0,4]=0;
matrix[1,0]=0;matrix[1,1]=-1;matrix[1,2]=-1;matrix[1,3]=-1;matrix[1,4]=0;
matrix[2,0]=0;matrix[2,1]=-1;matrix[2,2]=9;matrix[2,3]=-1;matrix[2,4]=0;
matrix[3,0]=0;matrix[3,1]=-1;matrix[3,2]=-1;matrix[3,3]=-1;matrix[3,4]=0;
matrix[4,0]=0;matrix[4,1]=0;matrix[4,2]=0;matrix[4,3]=0;matrix[4,4]=0;
//delta_sum = 1;
}
//выделение краев 2
if (Amount1==10)
{
matrix[0,0]=0;matrix[0,1]=0;matrix[0,2]=0;matrix[0,3]=0;matrix[0,4]=0;
matrix[1,0]=0;matrix[1,1]=-1;matrix[1,2]=-1;matrix[1,3]=-1;matrix[1,4]=0;
matrix[2,0]=0;matrix[2,1]=0;matrix[2,2]=0;matrix[2,3]=0;matrix[2,4]=0;
matrix[3,0]=0;matrix[3,1]=1;matrix[3,2]=1;matrix[3,3]=1;matrix[3,4]=0;
matrix[4,0]=0;matrix[4,1]=0;matrix[4,2]=0;matrix[4,3]=0;matrix[4,4]=0;
delta_sum = 1;
}
//выделение краев 3
if (Amount1==11)
{
matrix[0,0]=0;matrix[0,1]=0;matrix[0,2]=0;matrix[0,3]=0;matrix[0,4]=0;
matrix[1,0]=0;matrix[1,1]=-5;matrix[1,2]=0;matrix[1,3]=0;matrix[1,4]=0;
matrix[2,0]=0;matrix[2,1]=0;matrix[2,2]=1;matrix[2,3]=0;matrix[2,4]=0;
matrix[3,0]=0;matrix[3,1]=0;matrix[3,2]=0;matrix[3,3]=5;matrix[3,4]=0;
matrix[4,0]=0;matrix[4,1]=0;matrix[4,2]=0;matrix[4,3]=0;matrix[4,4]=0;
//delta_sum = 1;
}
//рельефность 1
if (Amount1==12)
{
matrix[0,0]=0;matrix[0,1]=0;matrix[0,2]=0;matrix[0,3]=0;matrix[0,4]=0;
matrix[1,0]=0;matrix[1,1]=-2;matrix[1,2]=-1;matrix[1,3]=0;matrix[1,4]=0;
matrix[2,0]=0;matrix[2,1]=-1;matrix[2,2]=1;matrix[2,3]=1;matrix[2,4]=0;
matrix[3,0]=0;matrix[3,1]=0;matrix[3,2]=1;matrix[3,3]=2;matrix[3,4]=0;
matrix[4,0]=0;matrix[4,1]=0;matrix[4,2]=0;matrix[4,3]=0;matrix[4,4]=0;
}
//рельефность 2
if (Amount1==13)
{
for (int i=0; i<=(radius*2); i++)
for (int j=0; j<=(radius*2); j++)
{
int temp = Math.Abs(i+j-radius*2);
if (temp==0){temp = 1;}
if ((j==j)&&(i>0)&&(i<radius*2)) {matrix[i,j]=temp;} else {matrix[i,j]=0;}
}
}
//рельефность 3
if (Amount1==14)
{
matrix[0,0]=0;matrix[0,1]=0;matrix[0,2]=0;matrix[0,3]=0;matrix[0,4]=0;
matrix[1,0]=0;matrix[1,1]=0;matrix[1,2]=0;matrix[1,3]=0;matrix[1,4]=0;
matrix[2,0]=0;matrix[2,1]=0;matrix[2,2]=1;matrix[2,3]=0;matrix[2,4]=0;
matrix[3,0]=0;matrix[3,1]=0;matrix[3,2]=0;matrix[3,3]=-1;matrix[3,4]=0;
matrix[4,0]=0;matrix[4,1]=0;matrix[4,2]=0;matrix[4,3]=0;matrix[4,4]=0;
delta_sum = 1;
delta = 128;
}
//рельефность 4
if (Amount1==15)
{
for (int i=0; i<=(radius*2); i++)
for (int j=0; j<=(radius*2); j++)
{
if ((i==j))
{
if (i<(radius-1)) {matrix[i,j]=0;}
else if (i==(radius-1)) {matrix[i,j]=radius;}
else if (i==(radius*2)) {matrix[i,j]=0;}
else {matrix[i,j]=-1;}
}
else {matrix[i,j]=0;}
}
matrix[0,0]=0;matrix[0,1]=0;matrix[0,2]=0;matrix[0,3]=0;matrix[0,4]=0;
matrix[1,0]=0;matrix[1,1]=2;matrix[1,2]=0;matrix[1,3]=0;matrix[1,4]=0;
matrix[2,0]=0;matrix[2,1]=0;matrix[2,2]=-1;matrix[2,3]=0;matrix[2,4]=0;
matrix[3,0]=0;matrix[3,1]=0;matrix[3,2]=0;matrix[3,3]=-1;matrix[3,4]=0;
matrix[4,0]=0;matrix[4,1]=0;matrix[4,2]=0;matrix[4,3]=0;matrix[4,4]=0;
delta_sum = 1;
delta = 128;
}
//диагональное разбиение
if (Amount1==16)
{
for (int i=0; i<=(radius*2); i++)
for (int j=0; j<=(radius*2); j++)
{
if ((i==0)&&(j==0)) {matrix[i,j]=1;}
else if ((i==0)&&(j==radius*2)) {matrix[i,j]=1;}
else if ((j==0)&&(i==radius*2)) {matrix[i,j]=1;}
else if ((j==radius*2)&&(i==radius*2)) {matrix[i,j]=1;}
else {matrix[i,j]=0;}
}
}
//Горизонтальное размытие
if (Amount1==17)
{
for (int i=0; i<=(radius*2); i++)
for (int j=0; j<=(radius*2); j++)
{
if (i==radius)
{
matrix[i,j]=radius*2 + (j-radius);
}
else {matrix[i,j]=0;}
}
}
//Toon
if (Amount1==18)
{
matrix[0,0]=-1;matrix[0,1]=-1;matrix[0,2]=-1;matrix[0,3]=-1;matrix[0,4]=-1;
matrix[1,0]=-1;matrix[1,1]=-1;matrix[1,2]=-1;matrix[1,3]=-1;matrix[1,4]=-1;
matrix[2,0]=-1;matrix[2,1]=-1;matrix[2,2]=30;matrix[2,3]=-1;matrix[2,4]=-1;
matrix[3,0]=-1;matrix[3,1]=-1;matrix[3,2]=-1;matrix[3,3]=-1;matrix[3,4]=-1;
matrix[4,0]=-1;matrix[4,1]=-1;matrix[4,2]=-5;matrix[4,3]=-1;matrix[4,4]=-1;
delta_sum = 1;
}
int maxx = selection.Right-1;
int maxy = selection.Bottom-1;
int minx = selection.Left;
int miny = selection.Top;
for (int y = rect.Top; y < rect.Bottom; y++)
{
for (int x = rect.Left; x < rect.Right; x++)
{
CurrentPixel = src[x,y];
int R=0;
int G=0;
int B=0;
int A=0;
int Sum=delta_sum;
//
for (int i=0; i<=(radius*2); i++)
{
for (int j=0; j<=(radius*2); j++)
{
int curx = x-radius+i;
int cury = y-radius+j;
if (curx<minx) {curx=minx;}
if (curx>maxx) {curx=maxx;}
if (cury<miny) {cury=miny;}
if (cury>maxy) {cury=maxy;}
{
R+=matrix[i,j]*src[curx,cury].R;
G+=matrix[i,j]*src[curx,cury].G;
B+=matrix[i,j]*src[curx,cury].B;
A+=matrix[i,j]*src[curx,cury].A;
Sum+=matrix[i,j];
}
}
}
if (Amount1 == 18) {Sum = 1;}
if (Sum>0)
{
if (Amount3 == false)
{
CurrentPixel.R = Int32Util.ClampToByte(R/Sum+delta);
CurrentPixel.G = Int32Util.ClampToByte(G/Sum+delta);
CurrentPixel.B = Int32Util.ClampToByte(B/Sum+delta);
}
if (Sum==(radius*2+1)*(radius*2+1))
{
CurrentPixel.A = Int32Util.ClampToByte(A/Sum+delta);
}
}
dst[x,y] = CurrentPixel;
}
}
}
paint.net - это бесплатный графический редактор - где бесплатно скачать paint.net - как установить эффекты и плагины в paint.net, где скачать inkscape и уроки inkscape
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 52 гостя