我正在尝试在Ubuntu 12.04服务器上使用ImageMagick来动态创建简单的名片。这是通过php页面完成的。我尝试安装MagickWand,但它确实没有用,所以我现在使用ImageMagick语法并通过PHP函数exec()
执行它。
我取得了很好的进展,并且或多或少地完成了基础知识,输出图像看起来还不错,现在正在调整,设置正确的位置,更改字体和大小等等。
我们的图形人员希望文本在Arial中带有粗体标题,因此我在服务器上安装了msttcorefonts。从那时起,输出图像中的文本是斜体,它忽略了我使用的任何字体。
奇怪的是:如果我将命令回显到页面,将其复制并粘贴到ubuntu控制台,那里创建的图像使用正确的字体,正是我想要的。
所以,似乎当我通过控制台执行命令时,一切都很好,但是当我通过exec()
在PHP中执行它时,ImageMagick似乎无法识别字体。有谁知道为什么?此外,如果它无法识别字体,为什么它默认为斜体,或者,就此而言,为什么默认情况下安装字体后会发生变化?
这是我正在测试的命令(更改名称和联系信息):
convert \
-size 1051x697 \
xc:none \
-density 300 \
-fill white \
draw "rectangle 0,0 1051,697" \
-fill black \
-font Arial-Negreta \
-pointsize 9 \
-draw "text 140,175 'Hotel Example'" \
-font Arial-Normal \
-pointsize 6 \
-draw "text 140,220 'Example Street 8'" \
-draw "text 140,240 '12345 Exampletown'" \
-draw "text 140,280 'Telefon: 123 45 67 89 0'" \
-draw "text 140,300 'Fax: 234 56 78 90'" \
-draw "text 140,340 'http://www.example.de'" \
-draw "text 140,360 'hotel-example@example.de'" \
-stroke none -fill orange -draw "rectangle 1,32 1050,75" \
-fill grey \
-draw "rectangle 1,75 1050,100" \
-fill orange \
-draw "rectangle 1,626 1050,665" \
test_front.png
编辑:
我刚刚注意到从Ubunut控制台运行命令也只能在我的主目录中运行,而不能在我的/ var / www目录中运行。正如APiK指出的那样,它可能是用户的事情。
答案 0 :(得分:3)
看起来您只为特定用户安装了字体。 尝试在控制台和PHP脚本中运行此命令:
# This will show you all the available fonts for ImageMagick
$ convert -list type
或者您也可以直接指定TTF字体:
$ convert -font /path/to/your/fonts.ttf
答案 1 :(得分:1)
我怀疑您的字体名称Arial-Fett
和Arial-Standard
是否被ImageMagick识别。
要查看convert
已知Arial字体的哪些名称,请先运行此命令:
convert -list font | grep -i arial
在我的系统(Mac OS Lion)上,我得到了这个结果:
[....]
Font: Arial-Narrow-Negreta-cursiva
family: Arial Narrow
glyphs: /Library/Fonts/Arial Narrow Bold Italic.ttf
Font: Arial-Narrow-Normal
family: Arial Narrow
glyphs: /Library/Fonts/Arial Narrow.ttf
Font: Arial-Negreta
family: Arial
glyphs: /Library/Fonts/Arial Bold.ttf
Font: Arial-Negreta-cursiva
family: Arial
glyphs: /Library/Fonts/Arial Bold Italic.ttf
Font: Arial-Normal
family: Arial
glyphs: /Library/Fonts/Arial.ttf
[....]
使用ImageMagick,您只能应用这两种方法来指定要使用的字体:
...要么使用完全 Font:
标记后出现的名称,
...或使用完全路径+名称到glyphs:
标记后面显示的特定字体文件(如果文件名或路径使用空格,请将其括在引号中!)。
所以在我的系统上,对于你的-font Arial-Standard
,我必须使用
-font Arial-Normal
-font /Library/Fonts/Arial.ttf
而不是你的-font Arial-Fett
,我必须使用
-font Arial-Negreta
-font "/Library/Fonts/Arial Bold.ttf"
在您的系统上,这当然可能有所不同(特别是如果您使用的是Windows或Linux)。这就是您必须使用convert -list font
...