смоделировать с надписью (imagemagick или graphicsmagick) - PullRequest
2 голосов
/ 07 июля 2019

Я пытаюсь выполнить несколько действий с изображением (изменить размер, обрезать, добавить немного пустого пространства внизу).

Затем я пытаюсь добавить заголовок в это пустое пространство.

Я хочу использовать mogrify, чтобы я мог редактировать существующий файл, а не создавать новый файл (он будет в большом объеме).

Это дает мне ошибку, я не совсем уверен, как это сделать. Это работает с convert, хотя.

magick mogrify -resize 300x -crop 300x200+0+50 -extent 300x290 input.jpg -size 300x90 -gravity SouthWest -font "Arial" -pointsize 24 -fill black caption:'dis some really long shit that goes on 3 lines onmg how will it ever the' -composite -quality 100

Ответы [ 3 ]

4 голосов
/ 07 июля 2019

magick - новое имя для конвертации в V7. Предположительно, чтобы избежать проблемы со встроенной программой конвертирования Windows

Примечание. Создает заголовок как отдельное изображение в памяти и присоединяет его к исходному изображению.

Старая программа конвертирования, показывающая способ использования изображения в переменной с использованием php

$size = getimagesize( $input ); 
$cmd = " $input ( -size {$size[0]}x30". 
" -background black -fill white". 
" -pointsize 16 -gravity center". 
" caption:\"Caption\" -flatten ) -append "; 
exec("convert $cmd caption_size.jpg");

Пример использования magick - обратите внимание на ярлык в -size, который сохраняет получение размера изображения в переменную. Один раз с использованием Windows

magick "input.jpeg" ( -size "fx:w"x30 -background black -fill white -pointsize 30 -gravity center caption:"Caption" -flatten ) -append "output.jpg"

Example output

3 голосов
/ 07 июля 2019
Магия

предназначена для IM 7, а конвертация - для IM 6. Если вам нужно выполнить mogrify, вы должны подготовить текстовое изображение отдельной командой и сохранить его.Затем используйте -draw в mogrify, чтобы сделать композит.Но если вы обрабатываете только одно изображение за раз, тогда преобразование является более гибким вариантом и позволит составные операторы и составные.Mogrify не позволяет вводить и выводить изображения.Он берет подстановочный знак звездочки (или один файл) и обрабатывает его, записывая вывод поверх ввода, если вы не указали выходной каталог.Смотрите ссылки, которые я упомянул в своем последнем комментарии.

Вот 3 способа сделать это.Первые два используют магию в IM 7, а третье создает текстовое изображение, используя магию, а затем использует магию mogrify для компоновки, используя -draw.Я рекомендую вам использовать второй метод, и если у вас есть много изображений для обработки, то напишите цикл сценария для каждого входного изображения.

Ввод:

enter image description here

При этом используется составной:

magick lena.jpg -resize 300x -crop 300x200+0+50 +repage -extent 300x290 \( -size 300x90 -gravity SouthWest -font "Arial" -pointsize 24 -fill black caption:'This is some really long stuff that goes on 3 lines so how will it ever fit' \) -compose over -composite -quality 100 lena_result1.jpg


enter image description here

Это проще сбез экстента, просто добавьте:

magick lena.jpg -resize 300x -crop 300x200+0+50 +repage \( -size 300x90 -gravity SouthWest -font "Arial" -pointsize 24 -fill black caption:'This is some really long stuff that goes on 3 lines so how will it ever fit' \) -append -quality 100 lena_result2.jpg


enter image description here

Это создает текстовое изображение и сохраняет как tmp.png:

magick -size 300x90 -gravity SouthWest -font "Arial" -pointsize 24 -fill black caption:'This is some really long stuff that goes on 3 lines so how will it ever fit' text.png


enter image description here

Затем он использует -draw для компоновки изображения test.png на один входна магию могрифи, которая всегда указывается последней в команде.Выходные данные записываются поверх этого ввода:

magick mogrify -resize 300x -crop 300x200+0+50 +repage -extent 300x290 -draw "gravity southwest image over 0,0 0,0 'text.png'" lena2.jpg


enter image description here

В приведенном выше тексте я использовал синтаксис Unix.Для Windows удалите \ from before (и before).

1 голос
/ 08 июля 2019

Вот один из способов использования ImageMagick для ограничения текста до 2 из 3 строк.Но вы должны знать, что это были бы 3 строки.

Я получаю ширину и высоту текстового изображения после обрезки, а затем обрезаю его до 2/3 высоты.Обратите внимание, что я использовал -smush +5 для добавления пробела между изображением и текстом, а не -append.

Ввод:

enter image description here

magick lena.jpg -resize 300x -crop 300x200+0+50 +repage \( -size 300x90 -gravity NorthWest -font "Arial" -pointsize 24 -fill black caption:'This is some really long stuff that goes on 3 lines so how will it ever fit' -trim +repage -set option:WxH "%wx%[fx:round(h*2/3)]" -crop "%[WxH]+0+0" +repage \) -smush +5 -quality 100 lena_result2.jpg


enter image description here

...