Saya mencoba menulis skrip yang menghasilkan gambar PNG dari teks, ukuran, dan font yang ada di argumen $_GET, tetapi saya tidak tahu cara membuat ukuran gambar pas dengan teks. Saya sudah menggunakan imagettfbox:
$widthPx = abs($ttfBox[2] - $ttfBox[0]);
$heightPx = abs($ttfBox[1] - $ttfBox[7]);
yang mungkin memberi saya pengukuran yang benar tetapi ketika saya menggambar teks, teksnya menjadi sedikit keluar batas. Misalnya jika saya mencoba menggambar "a" menggunakan arial.ttf setidaknya 5 piksel di luar batas. Apakah ada cara untuk menggambar teks dengan font apa pun yang sesuai dengan gambar tanpa mengujinya?
$text = $_GET["text"];
$cmToPixel = 15.0;
$sizeCm = floatval($_GET["sizeCm"]);
$sizePx = $cmToPixel * $sizeCm;
$fontFile = "fonts/".pathinfo($_GET["font"])["filename"].".".pathinfo($_GET["font"])["extension"];
if(!file_exists($fontFile)){
die;
}
$ttfBox = imagettfbbox($sizePx, 0, $fontFile, $text);
$widthPx = abs($ttfBox[2] - $ttfBox[0]);
$heightPx = abs($ttfBox[1] - $ttfBox[7]);
$image = ImageCreate($widthPx, $heightPx);
$x = $ttfBox[0] + (imagesx($image)-$ttfBox[4] )/ 2 - 0;
$y = $ttfBox[1] + (imagesy($image) / 2) - ($ttfBox[5] / 2) - 5;
ImageRectangle($image,0,0,imagesx($image),imagesy($image), ImageColorAllocate($image,255,255,255));
imagettftext($image, $sizePx,0,$x,$y, ImageColorAllocate($image, 0, 0, 0), $fontFile, $text);
header("Content-Type: image/png");
ImagePng($image);
ImageDestroy($image);