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

  • Автор темы Автор темы samsonnn
  • Дата начала Дата начала
А ещё вопрос ( да чёт их много :-) ) Я совсем чайник, и у меня возникли трудности с скачиванием dll библиотеки, я першёл на сайт ImageMagik
И вижу такую картину
Посмотреть вложение 55015
Нахожу то что мне нужно (Q8-) и начинаю скачивать, после чего устанавливаю exe. Но по пути установки обнаружил приложение и среди dll не было нужной мне библиотеки.
Где её найти и как скачать? На сайте одни exe да всякие rpm \ tar.gz и т.д. Может я чё не знаю про установку этих форматов... помогите пж
Тот же вопрос. Как скачать саму библиотеку? В папке с установленной программой есть куча dll, кроме нужного.
 
Тот же вопрос. Как скачать саму библиотеку? В папке с установленной программой есть куча dll, кроме нужного.
Эта тема заняла первое место в конкурсе ШАБЛОНОВ. На первой страничке найдите архив. В нем шаблон, dll и описание.
Dll + xml надо вставить в ExternalAssemblies
А в самом низу есть три ссылки, в том числе и ссылка на github.
 
Последнее редактирование:
Эта тема заняла первое место в конкурсе ШАБЛОНОВ. На первой страничке найдите архив. В нем шаблон, dll и описание.
Dll + xml надо вставить в ExternalAssemblies
А в самом низу есть три ссылки, в том числе и ссылка на github.
На гитхабе так и не нашел dll. Качаются файлы в формате .nupkg
А в посте решил, что документация прикреплена
65191

Оказался неправ. Спасибо)
 
  • Спасибо
Реакции: samsonnn
Большое спасибо, статья просто супер! А можно как-то определить второй, а не первый доминирующий цвет?

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); }
 
Статья конечно огонь ... фотошоп в зенке ... У меня такой вопрос, подскажите как все таки создать gif из нескольких изображений
 
Всем привет. Не могу найти решение. . Нужно при помощи данных библиотеки "замостить" фон. Чтобы фон был полностью покрыт маленькими изображениями. Как это сделать костылями, примерно понимать, но должно же быть какое-то простое решение?
 
Нужно при помощи данных библиотеки "замостить" фон. Чтобы фон был полностью покрыт маленькими изображениями.
Либа не нужна. Нужны познания в математике и геометрии. В цикле меняешь координаты.
Примеры гуглятся как "c# image tile"
 
  • Спасибо
Реакции: KolkaPetkinSyn
Подскажите пожалуйста. Как сгенерировать сетку с рандомным расстоянием между линий в формате BNG?
 

Вложения

  • Пример.png
    Пример.png
    199,4 KB · Просмотры: 326
Подскажите пожалуйста. Как сгенерировать сетку с рандомным расстоянием между линий в формате BNG?
Я вижу только одно решение: Создать белый файл необходимого размера. Потом создать два узких и длинных файла, один вертикальный другой горизонтальный. Вертикальный высотой как высота исходного файла а толщиной как желаемая толщина линии. Потом при помощи цикла накладывать эту линию на исходный файл, рандомизированное расстояние. С горизонтальным тоже самое только в другой плоскости. Мне самое элегантное решение но по-любому рабочее
 
  • Спасибо
Реакции: Fisher312
4. Blur - Расплывшиеся очертания

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

74981
 
Последнее редактирование:
Подскажите как в этом коде вместо "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#:

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

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

Вложения

  • Prikolnie-kartinki-0012.jpg
    Prikolnie-kartinki-0012.jpg
    57,5 KB · Просмотры: 277
  • Screenshot_19.jpg
    Screenshot_19.jpg
    375,2 KB · Просмотры: 281
  • Prikolnie-kartinki-0012 - копия.jpg
    Prikolnie-kartinki-0012 - копия.jpg
    175,2 KB · Просмотры: 273
  • Prikolnie-kartinki-0012 - копия2.jpg
    Prikolnie-kartinki-0012 - копия2.jpg
    43,5 KB · Просмотры: 274
Подскажите как в этом коде вместо "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);
}
 
не работает следующее решение:
Попробуйте первые три строки заменить на
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
Попробуйте первые три строки заменить на
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);
Большое спасибо!Все работает!
 
Самсону отдельный респект, это лучшая статья, которую видел в жизни...:bi:

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

Вложения

  • 2.441%.png
    2.441%.png
    2,4 MB · Просмотры: 325
  • 1.228%.png
    1.228%.png
    1,8 MB · Просмотры: 326
  • 1.557%.png
    1.557%.png
    1,7 MB · Просмотры: 319
  • 1.237%.png
    1.237%.png
    2,1 MB · Просмотры: 313
  • Спасибо
Реакции: samsonnn
Стало выдавать ошибку при добавлении dll

78668

78673
 
Последнее редактирование:
Как объеденить 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);
}
}
 
Разобрался, не пойму как ещё один текст добавить с другим шрифтом чтобы срабатывал
 
Столкнулся с ошибкой, либо при попытке выполнить любой кубик проджект мейкер закрывается, либо в логе вижу ошибку. Типа исключение, при попытке выполнить кубик по шагам уже получаю больше информации, о том, что не удается загрузить модуль, хотя он залит в ExternalAssemblies и добавлена ссылка в GAC, попробовал разные библиотеки, одна фигня. Попробовал скачать с гитхаба более свежие версии библиотеки, так они вообще в GAC не добавляются, кроме Magick.NET.Core.dll, но с ней вылетает пачка ошибок, что не обнаружены неймспейсы ImageOptimizers и Defines в ImageMagick кто-то сталкивался с таким?

b1f2d5d2a3.jpg
 
Попробовал на серваке все заработало, мб на рабочем компе не захотело работать из-за того что на нем Visual Studio стоит со всякими .NET Core SDK?

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

Upd: Отвечу на последний вопрос, для того что бы шрифты работали их надо задавать не через Font, a через FontFamily, вот только работают только стандартные виндовые шрифты, говно одним словом.
 
Последнее редактирование:
Разобрался, не пойму как ещё один текст добавить с другим шрифтом чтобы срабатывал
Создать еще один MagickImage с другим именем и в настройках для него указать шрифт через FontFamily, а не через Font.
 
спасибо автору за очень познавательную статью. а подскажите пожалуйста как сделать шрифт жирным и значение из переменной в верхнем регистре? пока не получается добиться желаемого результата
 
Подскажите, как с помощью Magick.NET узнать дату съемки Canon CR2 файла?
 
спасибо автору за очень познавательную статью. а подскажите пожалуйста как сделать шрифт жирным и значение из переменной в верхнем регистре? пока не получается добиться желаемого результата
по второму - текст в переменной перевести в верхний регистр, а потом вставлять переменную в код
 
  • Спасибо
Реакции: webstudioNSS
Есть возможность сделать скрин .exe программы через Magick в зенке?
Нагуглил такую команду, но как ее подружить с зенкой не знаю
import -window root screen.ps
 
Привет, подскажите возможно как то сделать рамку заданного цвета и шириной на изображения? Желательно без метода наложения одной картинки на другую.
 
Привет, подскажите возможно как то сделать рамку заданного цвета и шириной на изображения? Желательно без метода наложения одной картинки на другую.
А чем наложение плохо?
 

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