1

Ubuntu 12.04 サーバーで ImageMagick を使用して、単純な名刺を動的に作成しようとしています。これはphpページを介して行われます。MagickWand をインストールしようとしましたが、うまくいかなかったので、現在は ImageMagick 構文を使用し、PHP 関数を介して実行していますexec()

私は順調に進んでおり、基本は多かれ少なかれ完成していて、出力画像は問題ないように見え、現在は微調整、位置の設定、フォントとサイズの変更などを行っています.

私たちのグラフィック担当者は、テキストを Arial で太字のタイトルにしたいと考えているので、サーバーに msttcorefonts をインストールしました。それ以来、出力画像のテキストは斜体になり、私が使用するフォントは無視されます。

奇妙なことに、コマンドをページにエコーし、それをコピーしてubuntuコンソールに貼り付けると、そこで作成された画像は正しいフォントを使用し、まさに私が望むものです.

というわけで、コンソール経由でコマンドを実行すると問題ないようですが、PHP経由exec()で実行すると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 が指摘したように、それはおそらくユーザーの問題です。

4

2 に答える 2

3

特定のユーザー用にのみフォントをインストールしたようです。コンソールと PHP スクリプトで次のコマンドを実行してみてください。

# This will show you all the available fonts for ImageMagick
$ convert -list type

または、TTF フォントを直接指定することもできます。

$ convert -font /path/to/your/fonts.ttf
于 2012-08-31T12:52:42.320 に答える
1

私はあなたのフォント名を疑い、Arial-FettImageMagickArial-Standardによって認識されます。

が認識している Arial フォント フェースの名前を確認するにはconvert、最初に次のコマンドを実行します。

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 では、使用するフォントを指定するために次の 2 つの方法のみを適用できます。

  • ...タグの後に表示される名前を正確に使用するか、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...

于 2012-09-01T00:54:06.600 に答える