基本画像を取得し、その上にテキストを追加して結果をブラウザーに配信する単純な PHP スクリプトがあります。
問題は、ブラウザによってテキストのサイズが異なるように見えることです。私は一生、理由を理解できません。すべてがサーバー側で組み立てられるので、常に同じように見えるはずではありませんか?
スクリプト全体は次のとおりです。
<?php
$ext = $source_type = end(explode('.', $_REQUEST['base_image']));
if( $source_type == 'jpg' ) $source_type = 'jpeg';
$read = "imagecreatefrom$source_type";
$output = "image$source_type";
list($x, $y) = explode('x', $_REQUEST['position']);
list($r, $g, $b) = explode(',', $_REQUEST['color']);
$size = $_REQUEST['size'];
$text = $_REQUEST['text'];
$font = realpath($_REQUEST['font']);
$image = $read($_REQUEST['base_image']);
list($llx, $lly, $lrx, $lry, $urx, $ury, $ulx, $uly) = imageftbbox($size, 0, $font, $text);
$offset = ($lrx - $llx) / 2;
$color = imagecolorallocate($image, $r, $g, $b);
imagefttext($image, $size, 0, $x-$offset, $y, $color, $font, $text);
header("Content-Type: image/$source_type");
header("Content-Disposition: attachment; filename=\"wolfpackbadge.$ext\"");
$output($image);
私の家には、テキストを微視的に小さく表示するコンピューターが 1 台あります。また、非常に大きなテキストを含む他の報告も受けています。以下は、画像がどのように見えるかの例です。
これは、私の家の 1 台のコンピューターで表示した場合のスクリーンショットです。
これは、私に報告された別のユーザーがどのように見えるかのスクリーンショットです。
さらにいくつかの情報:
- 私の家のコンピュータは IE で見ると問題ないように見えます。Windows Chrome でのみ奇妙に見えます。しかし、私の家の別の Windows マシンは Chrome で正常に表示されます。
- 私が他の人から得た報告によると、Chrome、Android、iOS などの問題のあるブラウザーも示されています。
私の質問は:
- 画像がサーバー側で生成された場合、ブラウザによってフォントが異なるのはなぜですか?
- この問題を解決するには、スクリプトを何に変更すればよいですか?
私が試したいくつかのこと。
- フォントの種類に問題がないことを確認するために、フォントを otf から ttf に変換しようとしました。
- ソースと出力画像をjpeg以外に変更してみました