我一直使用 ImageMagick 使用以下方法将文本写入图像:
convert input.jpg \
-fill 'rgba(255, 255, 255, 1.0)' \
-font arial.ttf \
-pointsize 140 \
-gravity Center \
-annotate +0+0 'SOME TEXT' \
output.jpg
我如何传递 Unicode 值以便使用 FontAwesome 中的图标?
例如,我想将播放视频图标(fa-play-circle []
)放到图像上。
答案1
用于printf
将正确的 Unicode 值传递给convert
。
使用该-font
选项设置 FontAwesome 字体文件的路径。
用于@-
告诉-annotate
选项采用管道输入的文本。
env LC_CTYPE=en_US.utf8 \
printf "\uF144" | \
convert input.jpg \
-fill 'rgba(255, 255, 255, 1.0)' \
-font fontawesome-webfont.ttf \
-pointsize 140 \
-gravity Center \
-annotate +0+0 @- \
output.jpg
答案2
在 Macos (10.15) 上,这对我有用:
printf "\uF144" | \
convert input.jpg \
-fill 'rgba(255, 255, 255, 1.0)' \
-font fontawesome-webfont.ttf \
-pointsize 140 \
-gravity Center \
-annotate +0+0 @- \
output.jpg
设置env LC_TYPE=en_US.utf8
然后调用printf
生成:“ \uF144
”。printf "\uF144"
在没有环境 UTF 编码的情况下运行,打印
字符。
我不知道为什么,但我提交这个是为了为 Macos 用户补充 Liam 上述的正确答案。
运行上述程序成功将 fontawesome 图标渲染在生成的 output.jpg 图像中的 input.jpg 之上。