0

imagettftext php 関数を使用してレンダリングされたテキストを含む、Google の php appengine から画像を作成しようとしています。フォントファイル名を指定する必要があり、それは関数へのパスですが、アプリケーションをデプロイするときにスクリプトが静的ファイルとは別に保存されるため、php スクリプトから静的フォントディレクトリにアクセスする方法がわかりません。

これは、私の php スクリプトからの関連コードです。

header("Content-type: image/png");
$image = imagecreatetruecolor($imgWidth, $imgHeight);
imagealphablending($image, false);
$transparency = imagecolorallocatealpha($image, 0, 0, 0, 127);
$black = imagecolorallocatealpha($image, 0,0,0, 0);
$font = './font/Allerta-Regular.ttf';
imagefill($image, 0, 0, $transparency);
imagesavealpha($image, true);
imagealphablending($image, true);
imagettftext($image, $fontSize, $angle, 100, 100, $black, $font, "Test text");
imagepng($image);
imagedestroy($image);

ディレクトリ構造は次のようなものです:
- root
    - js
    - css
    - font
    - img
ここで、php スクリプトはルート フォルダーにあり、フォント ファイルは font フォルダーにあります。

上記のコードはローカル PC では機能しますが、サーバーに展開すると機能しません。imagettftext がフォントを見つけられず、エラー メッセージが表示されるからです。imagettftext にはローカル ファイル パスが必要なため、URL のフル パスを使用しても機能しません。

$font = '/font/Allerta-Regular.ttf' (最初のドットなし) も試しましたが、うまくいきませんでした。

「Google Cloud Storage」サービスを使用できることは知っていますが、このフォントは js ファイルからも使用されるため、それを雇ってファイルを複製したくありません。

imagettftext で使用する PHP アプリ エンジンのフォントを指定するにはどうすればよいですか?

ありがとう

4

3 に答える 3

0

Alex Alarconのソリューションに従って、PHPランタイムを使用してGAEでcool-php-captchaを適用するときに、フォントフォルダーを処理することを解決しました。

- url: /(.+\.(otf|ttf|woff))$
  script: \1

Python ソリューションの場合、そのハンドラーはデフォルトのままに処理する必要があります

- url: /(.*\.ttf)
  mime_type: font/opentype
  static_files: \1
  upload: (.*\.ttf)$
于 2014-11-02T09:22:35.463 に答える
0

フォント ファイルのリクエストを処理するために、app.yaml で何も宣言する必要はありませんでした。私の要件は、カスタム フォントを使用してバーコード ラベルを作成することでした。フォント ファイルは世界中に提供する必要はなく、アプリでのみ使用されます。

function label()
{
    ....
    $fbarcode = './resources/ttf/FRE3OF9X.TTF';
    imagettftext($im, 75, 0, 50, 170, $black, $fbarcode, "*{$p['id']}*");
    ....

    header('Content-Type: image/png');
    imagepng($im);
    imagedestroy($im);
}

フォント ファイルは、/resources の下のコードベースにあります。これは、ローカル環境とゲーの両方で機能します。ここでも、app.yaml で何も定義する必要はありませんでした。

于 2014-06-07T18:42:44.270 に答える