imageMagick:如何自动调整字幕框的大小?

时间:2017-05-28 22:38:28

标签: php 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 个答案:

答案 0 :(得分:1)

您可以使用label:或caption:在ImageMagick中将文本创建为自己的图像,并附加到图像的底部或将其合成到图像的底部。前者将选择字体大小,使文本适合图像的宽度。注意我没有指定高度或品脱大小。后者将使用您的pointsize和width(无高度)并根据需要将文本包装成多行。但它使文本部分更高,因为它使用的文本行数。潘戈:是另一种选择。见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

enter image description here

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

enter image description here

答案 1 :(得分:0)

使用我的评论。我修改了我的代码以使用PHP。这应该工作。如果不允许exec,你可以尝试shell_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