1 место Библиотека Magick.NET C# (Image Magick), работа с изображениями, и другие полезняшки.

Регистрация
04.10.2020
Сообщения
4
Благодарностей
2
Баллы
3
А ещё вопрос ( да чёт их много :-) ) Я совсем чайник, и у меня возникли трудности с скачиванием dll библиотеки, я першёл на сайт ImageMagik
И вижу такую картину
Посмотреть вложение 55015
Нахожу то что мне нужно (Q8-) и начинаю скачивать, после чего устанавливаю exe. Но по пути установки обнаружил приложение и среди dll не было нужной мне библиотеки.
Где её найти и как скачать? На сайте одни exe да всякие rpm \ tar.gz и т.д. Может я чё не знаю про установку этих форматов... помогите пж
Тот же вопрос. Как скачать саму библиотеку? В папке с установленной программой есть куча dll, кроме нужного.
 

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Тот же вопрос. Как скачать саму библиотеку? В папке с установленной программой есть куча dll, кроме нужного.
Эта тема заняла первое место в конкурсе ШАБЛОНОВ. На первой страничке найдите архив. В нем шаблон, dll и описание.
Dll + xml надо вставить в ExternalAssemblies
А в самом низу есть три ссылки, в том числе и ссылка на github.
 
Последнее редактирование:
Регистрация
04.10.2020
Сообщения
4
Благодарностей
2
Баллы
3
Эта тема заняла первое место в конкурсе ШАБЛОНОВ. На первой страничке найдите архив. В нем шаблон, dll и описание.
Dll + xml надо вставить в ExternalAssemblies
А в самом низу есть три ссылки, в том числе и ссылка на github.
На гитхабе так и не нашел dll. Качаются файлы в формате .nupkg
А в посте решил, что документация прикреплена
65191

Оказался неправ. Спасибо)
 
  • Спасибо
Реакции: samsonnn

Andr123

Client
Регистрация
08.01.2016
Сообщения
75
Благодарностей
10
Баллы
8
Большое спасибо, статья просто супер! А можно как-то определить второй, а не первый доминирующий цвет?

string InputImagePath = project.Variables["InputImagePath"].Value; // В переменной InputImagePath указать путь к изображению using (MagickImage image = new MagickImage(InputImagePath)){ Dictionary<MagickColor, int> dict = image.Histogram(); var keyOfMaxValue = dict.Aggregate((x, y) => x.Value > y.Value ? x : y).Key; Color c = keyOfMaxValue.ToColor(); string hex = "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2"); string rgb = c.R.ToString() + ", " + c.G.ToString() + ", " + c.B.ToString(); project.Variables["HexColor"].Value = hex; project.Variables["ColorRGB"].Value = rgb; project.SendInfoToLog("", "ColorRGB: " + rgb + " - HexColor: " + hex, true); }
 

Gnom41k

Client
Регистрация
03.02.2016
Сообщения
11
Благодарностей
2
Баллы
3
Статья конечно огонь ... фотошоп в зенке ... У меня такой вопрос, подскажите как все таки создать gif из нескольких изображений
 
Регистрация
23.03.2015
Сообщения
1 218
Благодарностей
751
Баллы
113
Всем привет. Не могу найти решение. . Нужно при помощи данных библиотеки "замостить" фон. Чтобы фон был полностью покрыт маленькими изображениями. Как это сделать костылями, примерно понимать, но должно же быть какое-то простое решение?
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Нужно при помощи данных библиотеки "замостить" фон. Чтобы фон был полностью покрыт маленькими изображениями.
Либа не нужна. Нужны познания в математике и геометрии. В цикле меняешь координаты.
Примеры гуглятся как "c# image tile"
 
  • Спасибо
Реакции: KolkaPetkinSyn

Fisher312

Client
Регистрация
06.08.2018
Сообщения
60
Благодарностей
23
Баллы
8
Подскажите пожалуйста. Как сгенерировать сетку с рандомным расстоянием между линий в формате BNG?
 

Вложения

Регистрация
23.03.2015
Сообщения
1 218
Благодарностей
751
Баллы
113
Подскажите пожалуйста. Как сгенерировать сетку с рандомным расстоянием между линий в формате BNG?
Я вижу только одно решение: Создать белый файл необходимого размера. Потом создать два узких и длинных файла, один вертикальный другой горизонтальный. Вертикальный высотой как высота исходного файла а толщиной как желаемая толщина линии. Потом при помощи цикла накладывать эту линию на исходный файл, рандомизированное расстояние. С горизонтальным тоже самое только в другой плоскости. Мне самое элегантное решение но по-любому рабочее
 
  • Спасибо
Реакции: Fisher312

Ikigai

Client
Регистрация
13.12.2016
Сообщения
276
Благодарностей
27
Баллы
28
4. Blur - Расплывшиеся очертания

Данный метод принимает следующие параметры:
Подскажите пожалуйста как можно по координатом делать размытие ( то есть конкретный прямоугольник, как на примере )

74981
 
Последнее редактирование:

eee

Client
Регистрация
04.06.2018
Сообщения
134
Благодарностей
31
Баллы
28
Подскажите как в этом коде вместо "119, 41, 150" использовать переменную?
C#:
string InputImagePath = project.Variables["InputImagePath"].Value; // В переменной InputImagePath указать путь к изображению
string SaveImagePath = project.Variables["SaveImagePath"].Value; // В переменной SaveImagePath указать путь куда сохраняем обработанное изображение
using (MagickImage image = new MagickImage(InputImagePath)){
       image.Opaque(MagickColor.FromRgb(119, 41, 150), MagickColor.FromRgb(0, 255, 0));
       image.Write(SaveImagePath);
}
 

Gooldbee

Client
Регистрация
16.05.2019
Сообщения
224
Благодарностей
25
Баллы
28
Получить файл с координатами и цветом пикселей

C#:

string InputImagePath = project.Variables["InputImagePath"].Value; // В переменной InputImagePath указать путь к изображению
string SaveFilePath = project.Variables["SaveFilePath"].Value; // В переменной SaveFilePath указать путь к файлу, с его названием и он будет создан сам
using (MagickImage image = new MagickImage(InputImagePath)){
image.Write(SaveFilePath);
}
Это пример.

Подскажите пожалуйста, получается можно получить координаты пикселей в красном прямоугольнике? и в дальнейшем вырезать всё что в нём находится?
 

Вложения

eee

Client
Регистрация
04.06.2018
Сообщения
134
Благодарностей
31
Баллы
28
Подскажите как в этом коде вместо "119, 41, 150" использовать переменную?
C#:
string InputImagePath = project.Variables["InputImagePath"].Value; // В переменной InputImagePath указать путь к изображению
string SaveImagePath = project.Variables["SaveImagePath"].Value; // В переменной SaveImagePath указать путь куда сохраняем обработанное изображение
using (MagickImage image = new MagickImage(InputImagePath)){
       image.Opaque(MagickColor.FromRgb(119, 41, 150), MagickColor.FromRgb(0, 255, 0));
       image.Write(SaveImagePath);
}
не работает следующее решение:
C#:
int r = Convert.ToInt32(project.Variables["r"].Value);
int g = Convert.ToInt32(project.Variables["g"].Value);
int b = Convert.ToInt32(project.Variables["b"].Value);
string InputImagePath = project.Variables["InputImagePath"].Value; // В переменной InputImagePath указать путь к изображению
string SaveImagePath = project.Variables["SaveImagePath"].Value; // В переменной SaveImagePath указать путь куда сохраняем обработанное изображение
using (MagickImage image = new MagickImage(InputImagePath)){
       image.Opaque(MagickColor.FromRgb(r, g, b), MagickColor.FromRgb(0, 255, 0));
       image.Write(SaveImagePath);
}
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
не работает следующее решение:
Попробуйте первые три строки заменить на
C#:
byte r = Convert.ToByte(project.Variables["r"].Value);
byte g = Convert.ToByte(project.Variables["g"].Value);
byte b = Convert.ToByte(project.Variables["b"].Value);
 
  • Спасибо
Реакции: eee и Sergodjan

eee

Client
Регистрация
04.06.2018
Сообщения
134
Благодарностей
31
Баллы
28
Попробуйте первые три строки заменить на
C#:
byte r = Convert.ToByte(project.Variables["r"].Value);
byte g = Convert.ToByte(project.Variables["g"].Value);
byte b = Convert.ToByte(project.Variables["b"].Value);
Большое спасибо!Все работает!
 
Регистрация
10.12.2015
Сообщения
46
Благодарностей
9
Баллы
8
Самсону отдельный респект, это лучшая статья, которую видел в жизни...:bi:

Есть ли идеи как приблизиться с помощью imagick к генерации таких шаблонов с градиентом?Кому интересно - присоединяйтесь, готов поучаствовать в разработке алгоритмов, фильтры и свойства в фотошопе я немного понимаю...На выходе можно сделать некий бот конструктор по сборке такого изображения со входными настройками...Папка "Слои">>>>Картинка-слой-фон1.png Картинка-слой-объект-200-354-координаты-объекта.png и т.д. Настройка - фильтр экран - координаты x, y и тд Продолжать можно бесконечно, экшенами в фотошопе частично можно решать, но реализовать такое в зенке будет бомбически интересно, а мож кто уже и сделал, но я такого еще не видел))
 

Вложения

  • Спасибо
Реакции: samsonnn

White trash

Client
Регистрация
09.06.2014
Сообщения
829
Благодарностей
362
Баллы
63
Как обозначить не один цвет (255, 255, 255), а диапазон?
 

Ikigai

Client
Регистрация
13.12.2016
Сообщения
276
Благодарностей
27
Баллы
28
Стало выдавать ошибку при добавлении dll

78668

78673
 
Последнее редактирование:

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113

Kiver92

Client
Регистрация
06.02.2021
Сообщения
3
Благодарностей
0
Баллы
1
Как объеденить 2 кода?
наложение текста и наложение картинки
string InputImagePath = project.Variables["InputImagePath"].Value;
string SaveImagePath = project.Variables["SaveImagePath"].Value;
using (MagickImage image = new MagickImage(InputImagePath)){
MagickReadSettings readSettings = new MagickReadSettings{
FillColor = MagickColors.Blue, // цвет текста
BackgroundColor = MagickColors.Transparent, // фон текста
Font = "Arial", // Шрифт текста (только те, что установлены в Windows)
Width = 350, // Ширина текста
Height = 48 }; // Высота текста
image.Alpha(AlphaOption.Opaque);
using (MagickImage label = new MagickImage("label:Тут какой то текст", readSettings)){
image.Composite(label, 200, 100, CompositeOperator.Over); // расположение текста на картинке 200 слева, 100 сверху
image.Write(SaveImagePath);
}
}

string InputImagePath = project.Variables["InputImagePath"].Value;
string WatermarkImagePath = project.Variables["WatermarkImagePath"].Value;
string SaveImagePath = project.Variables["SaveImagePath"].Value;

using (MagickImage image = new MagickImage(InputImagePath)){
using (MagickImage watermark = new MagickImage(WatermarkImagePath)){
image.Composite(watermark, Gravity.Southeast, CompositeOperator.Over);
watermark.Evaluate(Channels.Alpha, EvaluateOperator.Divide, 5);
image.Composite(watermark, 50, 50, CompositeOperator.Over);
image.Write(SaveImagePath);
}
}
 

Kiver92

Client
Регистрация
06.02.2021
Сообщения
3
Благодарностей
0
Баллы
1
Разобрался, не пойму как ещё один текст добавить с другим шрифтом чтобы срабатывал
 

Delvig

Client
Регистрация
07.09.2016
Сообщения
132
Благодарностей
131
Баллы
43
Столкнулся с ошибкой, либо при попытке выполнить любой кубик проджект мейкер закрывается, либо в логе вижу ошибку. Типа исключение, при попытке выполнить кубик по шагам уже получаю больше информации, о том, что не удается загрузить модуль, хотя он залит в ExternalAssemblies и добавлена ссылка в GAC, попробовал разные библиотеки, одна фигня. Попробовал скачать с гитхаба более свежие версии библиотеки, так они вообще в GAC не добавляются, кроме Magick.NET.Core.dll, но с ней вылетает пачка ошибок, что не обнаружены неймспейсы ImageOptimizers и Defines в ImageMagick кто-то сталкивался с таким?

b1f2d5d2a3.jpg
 

Delvig

Client
Регистрация
07.09.2016
Сообщения
132
Благодарностей
131
Баллы
43
Попробовал на серваке все заработало, мб на рабочем компе не захотело работать из-за того что на нем Visual Studio стоит со всякими .NET Core SDK?

Кроме того обнаружил такую фигню, что наложение текста с разными шрифтами не работает. Попробовал установил в винду свои шрифты - не работают, так же как и изначальные виндовые шрифт типа Times New Roman и Comic Sans. Всегда надпись одним шрифтом Arial-ом. У всех так или только мне так везет?

Upd: Отвечу на последний вопрос, для того что бы шрифты работали их надо задавать не через Font, a через FontFamily, вот только работают только стандартные виндовые шрифты, говно одним словом.
 
Последнее редактирование:

Delvig

Client
Регистрация
07.09.2016
Сообщения
132
Благодарностей
131
Баллы
43
Разобрался, не пойму как ещё один текст добавить с другим шрифтом чтобы срабатывал
Создать еще один MagickImage с другим именем и в настройках для него указать шрифт через FontFamily, а не через Font.
 

webstudioNSS

Client
Регистрация
30.01.2020
Сообщения
44
Благодарностей
6
Баллы
8
спасибо автору за очень познавательную статью. а подскажите пожалуйста как сделать шрифт жирным и значение из переменной в верхнем регистре? пока не получается добиться желаемого результата
 

Mild

Новичок
Регистрация
09.08.2021
Сообщения
1
Благодарностей
0
Баллы
1
Подскажите, как с помощью Magick.NET узнать дату съемки Canon CR2 файла?
 

zennoX

Client
Регистрация
05.04.2014
Сообщения
484
Благодарностей
134
Баллы
43
спасибо автору за очень познавательную статью. а подскажите пожалуйста как сделать шрифт жирным и значение из переменной в верхнем регистре? пока не получается добиться желаемого результата
по второму - текст в переменной перевести в верхний регистр, а потом вставлять переменную в код
 
  • Спасибо
Реакции: webstudioNSS

Nukoller

Client
Регистрация
23.12.2019
Сообщения
17
Благодарностей
11
Баллы
3
Есть возможность сделать скрин .exe программы через Magick в зенке?
Нагуглил такую команду, но как ее подружить с зенкой не знаю
import -window root screen.ps
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Привет, подскажите возможно как то сделать рамку заданного цвета и шириной на изображения? Желательно без метода наложения одной картинки на другую.
 
Регистрация
23.03.2015
Сообщения
1 218
Благодарностей
751
Баллы
113
Привет, подскажите возможно как то сделать рамку заданного цвета и шириной на изображения? Желательно без метода наложения одной картинки на другую.
А чем наложение плохо?
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)