我正在尝试对图像执行多项操作(调整大小,裁剪,在底部添加一些空白区域)。
然后我要在空白处添加标题。
我想使用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
答案 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"
答案 1 :(得分:3)
magick用于IM 7,转换用于IM6。如果需要进行迁移,则必须在单独的命令中准备文本图像并将其保存。然后使用-draw in mogrify进行合成。但是,如果一次只处理一个图像,那么convert是更灵活的选项,它将允许复合语句和复合语句。 Mogrify不允许输入和输出图像。除非您提供输出目录,否则它将使用asterix通配符(或一个文件)并对其进行处理以将输出写到输入上。请参阅我在上一条评论中提到的链接。
这里有3种方法。前两个在IM 7上使用magick,第三个使用magick创建文本图像,然后使用magick mogrify通过-draw对其进行合成。我建议您使用第二种方法,如果要处理的图像很多,请在每个输入图像上编写一个脚本循环。
输入:
这使用复合:
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
这是没有范围的更简单的方法,只需附加:
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
这将创建文本图像并将其另存为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
然后,它使用-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
在上面,我使用了Unix语法。对于Windows,请从之前(和之前)删除\。
答案 2 :(得分:1)
这是使用ImageMagick将文本限制为3行中的2行的一种方法。但是您必须知道应该只有3行。
修剪后得到文本图像的宽度和高度,然后将其裁剪为2/3高度。请注意,我已经使用-smush +5在图像和文本之间添加空间,而不是-append。
输入:
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