で始まるとき、imagettfbboxが間違った矩形を計算するimagettfbbox
を使用してテキストの寸法を計算すると、入力テキストが数字で始まるときに小さすぎる矩形が返されるという問題があります。これは私のコードです:数字が
$fontSize = 150;
$font = "font/courier_new.ttf";
$text = $_GET["text"];
//Determine font dimensions
$bbox = imagettfbbox($fontSize, 0, $font, $text);
$bbox["width"]= abs($bbox[4]-$bbox[0]);
$bbox["height"]= abs($bbox[5]-$bbox[1]);
$im = imagecreatetruecolor($bbox["width"], $bbox["height"]);
echo "<b>Image size:</b>\n";
print_r($bbox);
// This part makes transparent background
imagesavealpha($im, true);
$bg = imagecolorallocatealpha($im, 254, 254, 254,127);
$text_color= imagecolorallocate($im, 0, 0, 0);
imagealphablending($im, false);
imagefilledrectangle($im, 0, 0, imagesx($im), imagesy($im), $bg);
imagealphablending($im, true);
header("X-Img-Size: ".$bbox["width"]."x".$bbox["height"]."");
imagettftext($im, $fontSize, 0, 0, $bbox["height"], $text_color, $font, $text);
// This is output
header("Content-Type: text/html");
ob_start();
imagepng($im);
$image_data = ob_get_contents();
ob_end_clean();
imagedestroy($im);
echo "<img src=\"data:image/png;base64,".base64_encode($image_data)."\" />";
これらは、異なる入力テキストのための私が得る結果である
:
どうすれば修正できますか?
これは既知の問題であるように思われます。 http://php.net/manual/en/function.imagettfbbox.php、espを参照してください。 'peterjwest3'の答えを提案しました。関数の作者は、いくつかのショートカットを取っているに違いありません。... [FT_BBox'](http://www.freetype.org/freetype2/docs/reference/ft2-basic_types.html#FT_BBox)を使用しているようですこれは* "グリフのディセンダ"を正しく与えるでしょう。 – usr2564301
@TomášZato - http://php.net/manual/en/function.imagettfbbox.phpにアクセスして、推奨される回避策espを読みましたか? 8年前から「mike at mikeleighドットコム」のもの?もしあなたの提案された回避策/修正が回避できない/あなたが持っている問題を修正するいくつかの理由がありますか? –
@BobJarvis私はそこですべての回避策を使用したことを誓ってはいませんが、このコードではすでに推奨されているコードのいくつかが適用されています。あなたが言った正確な回避策を試してみます。 –