質問: ### 前提・実現したいこと windows7でxamppをインストールしました。PHPのバージョンはPHP7です。 ### 発生している問題・エラーメッセージ imagettftextを使い画像をブラウザに出力しようと思ってマニュアルの例1にある下のプログラムを実行しましたが、**画像ファイルhttp://localhost/hoge.phpは壊れているため、表示できませんでした。**と表示されてマニュアルの出力例のようにならないです。arial.ttfはphpファイルと同じ階層におきました。いったい何が違うのでしょうか? ``` ``` ### ためしたこと * headerの位置をimagepngの直前にする。 * headerの位置をimagedestroyの直後にする。 * headerの位置をプログラムの先頭にする。 * $fontのパスを絶対パス(`C:\Windows\Fonts\ARIALNB.TTF`と`C:\xampp\htdocs\arial.ttf`)を指定する。 * $fontを`dirname(__FILE__) . 'arial.ttf'`もしくは`__DIR__ . 'arial.ttf'`とする。 * `error_reporting(E_ALL)`でエラーが表示されないか確認する。 * `phpinfo()`と`gd_info()`でGDライブラリがインストールされているか確認する。 #### phpinfo()の結果 ![phpinfoの結果](https://teratail.storage.googleapis.com/uploads/contributed_images/faa226d7c670bd9072bd54244ec7df5b.png) #### gd_info()の結果 ``` Array ( [GD Version] => bundled (2.1.0 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [GIF Read Support] => 1 [GIF Create Support] => 1 [JPEG Support] => 1 [PNG Support] => 1 [WBMP Support] => 1 [XPM Support] => 1 [XBM Support] => 1 [WebP Support] => 1 [JIS-mapped Japanese Font Support] => ) ``` * filesize($font)の実行。 #### filesize($font)の実行 以下のようにプログラムを編集して、filesize($font)を表示しました。 $fontのパスは`C:\Windows\Fonts\ARIALNB.TTF`と`C:\xampp\htdocs\arial.ttf`の両方を試しました。 実行するとどちらのパスを指定した場合も**367112**という文字が表示されました。 ``` ``` * pngをファイルに保存する。 pngをファイルに保存するときは、以下のプログラムを使いました。 このプログラムを実行すると、phpファイルと同じ階層に120*20pxのtest.pngが作成されました。 ```
回答: 手元で確認してみましたが、`$font = 'arial.ttf';`を実在する絶対パスにしたら画像が生成されましたよ ちなみに環境はubuntu 16.04で以下のフォントを指定しました。 ``` $font = '/usr/share/fonts/truetype/takao-gothic/TakaoGothic.ttf'; ``` **(追記)** 切り分けとして、以下のコードを実行するとグレーの画像がでますか ``` ``` **(追記)** 色々調べた結果、原因としてはPHPファイルにBOMが付いているため、画像ファイルにBOMが付いてしまって、画像が壊れていました。 http://dotnsf.blog.jp/archives/1041643802.html