使用 ImageMagick 转换特殊字符

Converting special characters with ImageMagick

我正在使用 PowerShell 脚本将 Unicode 字符批量转换为 PNG 文件。参见 http://pastebin.com/aGJzk4Hh

我发现要转换 " 字符必须使用指定标签:\".

其他特殊字符就没那么简单了。

C:\ImageMagick\convert.exe -background transparent -fill hsb(0,0,0) \
    -font Arial -pointsize 18 -size 18x26 -gravity center label:"@" \
     C:\Users\erics_000\Desktop\Output\Chars.png

convert.exe: UnableToAccessPath  @ error/property.c/InterpretImageProperties/3330.
convert.exe: NoImagesDefined `C:\Users\erics_000\Desktop\Output\Chars.png' @ error/convert.c/ConvertImageCommand/3230.

以及:

C:\ImageMagick\convert.exe -background transparent -fill hsb(0,0,0) \
    -font Arial -pointsize 18 -size 18x26 -gravity center label:"\" \
     C:\Users\erics_000\Desktop\Output\CharsC.png

convert.exe: NoImagesDefined `label:" C:\Users\erics_000\Desktop\Output\CharsC.png' @ error/convert.c/ConvertImageCommand/3230.

对我来说问题很大。

我已经尝试了所有我知道如何通过 \ 转义这些字符的方法,但是还没有任何方法被证明有效。我需要能够转换所有 Unicode 字符,包括 \@

是否知道如何使用 ImageMagick 将这些文件转换为 PNG 文件?

第一个问题:您是否检查过您的 Arial 版本是否包含相关 Unicode 字符的字形?

好的,如果它也是关于 \@ 字符,那么 that 应该没有问题。这导致我...

第二个问题:你安装的是哪个版本的ImageMagick?你能报告convert -version的结果吗?

这是 my 在 Mac OS X Mavericks 10.9 系统上使用 ImageMagick v6.9.0-0 的结果:

convert -background black -fill red -pointsize 96 label:' @ \ @ \ @ ' sample.png

和(注意开始和结束我的字符串的空白!):

convert -background transparent -fill hsb\(0,0,0\) -font Arial \
        -pointsize 180 -size 190x210 -gravity center label:' @ ' \
        -frame 1 \
         sample2.png

如果您需要从由 Unicode 字符代码组成的输入中发出真正的 Unicode 字形,您可以借助 Perl 来完成。我猜Powershell也有这个方法,但我不熟悉它):

perl -e 'binmode(STDOUT, ":utf8"); \
      print " Smiley: \x{263A} "'  \
     | convert -background black   \
               -fill red           \
               -pointsize 98       \
               -font Menlo         \
                label:@-           \
                smiley.png

(注意:@- 语法只是告诉 convert 从标准输入中读取标签的输入字符串...)