使用ImageMagick快速生成带文字的图片

发文章经常需要一些图片。我以前都是在Mac上用Keynote输入文字转成PNG生成简单的图片。虽然Keynote很好用但步骤还是比较繁琐,因此我演讲了使用ImageMagic生成:

convert -size 1280x720 xc:skyblue \-pointsize 120 -gravity center \-font "/Users/seven/Library/Fonts/NotoSansCJK-Bold.ttc" \-fill white -stroke navy \-draw "text 0,0 '你好'" \a.png

生成的图片如下:
在这里插入图片描述
其中:

  • -size: 图片大小
  • xc:color:背景色,skyblue是天蓝色,还可以是whiteblack
  • -pointsize:字体大小,像素
  • gravity center:居中
  • -fill:字体颜色,填充色
  • stroke:画笔颜色,边框色
  • -font:字体,我使用了Google的Noto Sans字体
  • draw:文本,其中0,0表示坐标偏移量

为了给文字加是阴影,可以画两次,如:

convert -size 1280x720 xc:skyblue \-fill black -stroke black -blur 3 \-pointsize 120 -gravity center \-font "/Users/seven/Library/Fonts/NotoSansCJK-Bold.ttc" \-draw "text 3,3 '你好'" \-fill white -stroke navy \-draw "text 0,0 '你好'" \b.png

效果如下:

在这里插入图片描述
这样就可以方便地生成很多不同的图片。

为了方便使用,我将上述代码放到一个Shell脚本中,随时使用:

#!/bin/bashtext=$1
out=$2convert -size 1280x720 xc:skyblue \-fill black -stroke black -blur 2 \-pointsize 120 -gravity center \-font "/Users/seven/Library/Fonts/NotoSansCJK-Bold.ttc" \-draw "text 3,3 '$1'" \-fill white -stroke navy \-draw "text 0,0 '$1'" \$out

用的时候只要在命令行上打上makeimg “你好” a.png就好了。如果需要改变颜色和文字大小就多写几个不同的Shell脚本或者修改上述脚本多加几个参数。

顺便说一下,如果格式换成webp最终图片文件会小很多,可以对比下:

$ /tmp ls -l b.*
-rw-r--r--@ 1 seven  wheel  45837 Feb  5 08:44 b.png
-rw-r--r--  1 seven  wheel   6966 Feb  5 08:51 b.webp

这样,我每次写文章时,就简单生成一个图片。等什么时候美工有空了,就会帮我画个更好看的。

比如下面的文章最初就使用了下面的图片:
在这里插入图片描述
http://freeswitch.org.cn/blog/2023/02/rfc3261/

SIP协议 RFC3261

祝玩得开心。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部