imageMagick: Как автоматически изменить размер поля заголовка?

Я использую imageMagick convert команда в PHP файл, чтобы добавить подпись к изображению.

Это отлично работает.

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

Есть ли способ изменить размер поля заголовка в зависимости от его содержимого?

Это мой код, который я запускаю из моего файла php:

<?php

shell_exec("convert input.png \
          -gravity Southwest   -background '#f48fb0'  -splice 0x44 \
          -pointsize 30 -fill white -annotate +10+4 'This is a long caption texts that I need to place in the image caption... blah blah blah blah... This is a long caption texts that I need to place in the image caption... blah blah blah blah... '   output.png");

?>

2 ответа

Решение

Вы можете использовать метку: или заголовок: чтобы создать текст как свое собственное изображение в ImageMagick и добавить к нижней части изображения или составить его внизу над изображением. Первый выберет размер шрифта такой, чтобы текст вписывался в ширину вашего изображения. Обратите внимание, я не указал высоту или размер пинты. Последний будет использовать ваш размер точек и ширину (без высоты) и обернет текст в столько строк, сколько необходимо. Но это делает текстовую часть выше на количество строк текста, которые он использует. Панго: это еще один вариант. См. http://www.imagemagick.org/Usage/text/. Если я добавлю, то получу эти два результата, используя логотип: внутреннее изображение ImageMagick.

wd=`convert logo: -format "%w" info:`

convert logo: \
\( -size ${wd}x -background '#f48fb0' -gravity center -fill white \
label:'This is a long caption texts that I need to place in the image caption... blah blah blah blah... This is a long caption texts that I need to place in the image caption... blah blah blah blah... ' \) \
-append output2.png

введите описание изображения здесь

convert logo: \
\( -size ${wd}x -background '#f48fb0' -gravity center -fill white -pointsize 30 \
caption:'This is a long caption texts that I need to place in the image caption... blah blah blah blah... This is a long caption texts that I need to place in the image caption... blah blah blah blah... ' \) \
-append output3.png

введите описание изображения здесь

Используя мои комментарии представлены. Я изменил свой код для использования PHP. Это должно работать. Вы можете попробовать shell_exec, если exec не разрешен.

<?php
$wd = exec("convert input.png -format '%w' info:");
exec("convert logo: \( -size ${wd}x -background '#f48fb0' -gravity center -fill white label:'This is a long caption texts that I need to place in the image caption... blah blah blah blah... This is a long caption texts that I need to place in the image caption... blah blah blah blah... ' \) -append output.png");
?>

или же

<?php
exec("wd=`convert input.png -format '%w' info:` \
convert input.png \( -size ${wd}x -background '#f48fb0' -gravity center -fill white label:'This is a long caption texts that I need to place in the image caption... blah blah blah blah... This is a long caption texts that I need to place in the image caption... blah blah blah blah... ' \) -append output.png");
?>

Убедитесь, что при копировании и вставке этого, после пробела \ в первой строке для вычисления wd нет места.

Или вы просто используете PHP getimagesize(), чтобы получить аргумент wd. Смотрите http://php.net/manual/en/function.getimagesize.php

Другие вопросы по тегам