用标题(imagemagick或graphicsmagick)进行迁移

时间:2019-07-07 05:17:21

标签: imagemagick imagemagick-convert graphicsmagick

我正在尝试对图像执行多项操作(调整大小,裁剪,在底部添加一些空白区域)。

然后我要在空白处添加标题。

我想使用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 个答案:

答案 0 :(得分:4)

magick是V7中convert的新名称。大概是为了避免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

答案 1 :(得分:3)

magick用于IM 7,转换用于IM6。如果需要进行迁移,则必须在单独的命令中准备文本图像并将其保存。然后使用-draw in mogrify进行合成。但是,如果一次只处理一个图像,那么convert是更灵活的选项,它将允许复合语句和复合语句。 Mogrify不允许输入和输出图像。除非您提供输出目录,否则它将使用asterix通配符(或一个文件)并对其进行处理以将输出写到输入上。请参阅我在上一条评论中提到的链接。

这里有3种方法。前两个在IM 7上使用magick,第三个使用magick创建文本图像,然后使用magick 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的一个输入上,该输入始终在命令的最后指定。输出将通过以下输入进行写:

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,请从之前(和之前)删除\。

答案 2 :(得分:1)

这是使用ImageMagick将文本限制为3行中的2行的一种方法。但是您必须知道应该只有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