带有标题的 mogrify(imagemagick 或 graphicsmagick)
mogrify with caption (imagemagick or graphicsmagick)
我正在尝试对图像执行多项操作(调整大小、裁剪、在底部添加一些空白 space)。
然后我尝试在那个空白处添加标题 space。
我想使用 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
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"
magick 是IM 7 的,convert 是IM 6 的。如果你需要做mogrify,那么你必须在单独的命令中准备文本图像并保存它。然后在mogrify中使用-draw进行合成。但是如果您一次只处理一张图像,那么转换是更灵活的选项,并且允许复合语句和合成。 Mogrify 不允许同时输入和输出图像。它需要一个星号通配符(或一个文件)并处理它,将输出写入输入,除非您提供输出目录。请参阅我在上一条评论中提到的链接。
这里有 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
这个比较简单,没有extent,直接追加:
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,删除之前 ( 和之前 ) 中的 \。
这是使用 ImageMagick 将文本限制为 3 行中的 2 行的一种方法。但是你要知道本来就是3行。
我得到文字图片裁剪后的宽高,然后裁剪到2/3高度。请注意,我使用 -smush +5 在图像和文本之间添加 space 而不是 -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
我正在尝试对图像执行多项操作(调整大小、裁剪、在底部添加一些空白 space)。
然后我尝试在那个空白处添加标题 space。
我想使用 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
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"
magick 是IM 7 的,convert 是IM 6 的。如果你需要做mogrify,那么你必须在单独的命令中准备文本图像并保存它。然后在mogrify中使用-draw进行合成。但是如果您一次只处理一张图像,那么转换是更灵活的选项,并且允许复合语句和合成。 Mogrify 不允许同时输入和输出图像。它需要一个星号通配符(或一个文件)并处理它,将输出写入输入,除非您提供输出目录。请参阅我在上一条评论中提到的链接。
这里有 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
这个比较简单,没有extent,直接追加:
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,删除之前 ( 和之前 ) 中的 \。
这是使用 ImageMagick 将文本限制为 3 行中的 2 行的一种方法。但是你要知道本来就是3行。
我得到文字图片裁剪后的宽高,然后裁剪到2/3高度。请注意,我使用 -smush +5 在图像和文本之间添加 space 而不是 -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