Dalam PHP, kita boleh melukis teks dalam fail fon TrueType pada imej melalui fungsi imagettftext(). Walaupun fungsi ini sangat mudah, kadangkala kita menghadapi masalah imagettftext aksara bercelaru, iaitu, teks yang dipaparkan pada imej tidak konsisten dengan apa yang ditakrifkan dalam fail fon asal, yang akan menjejaskan pengalaman aplikasi kami dengan serius.
Dalam artikel ini, kami akan meneroka sebab mengapa imagettftext bercelaru dan cara menyelesaikan masalah ini. | masalah versi dengan pustaka imej PHP. Berikut adalah kemungkinan sebab imagettftext bercelaru:
1 Fail fon tidak serasi dengan sistem: Fail fon TrueType dicipta oleh pereka bentuk fon dan kadangkala tidak serasi dengan sistem yang berbeza seperti Windows dan Linux.
2.Masalah versi perpustakaan imej PHP: Versi pustaka imej yang berbeza mungkin mempunyai sokongan yang berbeza untuk fail fon. Jika PHP anda tidak serasi dengan versi pustaka imej, fungsi imagettftext() mungkin juga mempunyai aksara yang bercelaru.
3. Masalah dengan fail fon itu sendiri: Sebelum menggunakan fungsi imagettftext(), anda perlu memastikan bahawa fail fon anda dipasang dengan betul pada sistem/pelayan anda.
2. Kaedah untuk menyelesaikan watak bercelaru imagettftext
Walaupun mungkin terdapat banyak sebab untuk watak bercelaru imagettftext, kita boleh mengambil beberapa langkah untuk menyelesaikan masalah ini.
1. Semak Fail Font
Mula-mula, kita perlu memastikan bahawa fail fon kami dipasang dengan betul pada sistem/pelayan kami. Biasanya, fail fon hendaklah diletakkan dalam direktori akar projek anda atau folder fon dalam direktori projek anda.
Selain itu, sebelum menggunakan fail fon, adalah disyorkan agar anda cuba menukarnya kepada format .ttf dan menyemak sama ada terdapat aksara khas melalui baris arahan atau editor fon (seperti FontForge), yang boleh menyebabkan imej menjadi masalah kod bercelaru.
2. Gunakan fon yang boleh dilaksanakan
Selepas menyemak fail fon, jika anda masih menghadapi masalah bercelaru imagettftext, maka anda boleh cuba menggunakan beberapa fail fon yang boleh dilaksanakan Fail ini telah digunakan secara meluas digunakan dan terbukti berfungsi dengan baik. Berikut ialah beberapa cadangan fail fon yang biasa digunakan:
ArialVerdanaFungsi mb_convert_encoding() boleh menukar rentetan daripada satu pengekodan aksara kepada yang lain. Sebelum menggunakan fungsi mb_convert_encoding(), anda perlu menambah laluan ke fail fon pada fail konfigurasi PHP.ini. Laluan fon boleh ditetapkan menggunakan baris kod berikut:
ini_set('gd.jpeg_ignore_warning', 1);
putenv('GDFONTPATH=' . realpath('.'));Langkah-langkah untuk menggunakan fungsi mb_convert_encoding() adalah seperti berikut:
1 Gunakan fungsi mb_detect_encoding() untuk mengesan kaedah pengekodan rentetan anda:
$str = '. Saya adalah watak Cina';
$encoding = mb_detect_encoding($str);2 Gunakan fungsi mb_convert_encoding() untuk menukar rentetan daripada pengekodan yang dikesan kepada pengekodan yang ditentukan:<.>$charset = ' UTF-8';
$output = mb_convert_encoding($str, $charset, $encoding);
3. Hasilkan imej dan gunakan fungsi imagettftext() untuk melukis teks pada imej:
$img = imagecreatetruecolor(640, 480);
$black = imagecolorallocate($img, 0, 0, 0);
$font = 'arialbd.ttf' ; //Gunakan font Arial
imagettftext($img, 24, 0, 10, 50, $black, $font, $text);header('Content-Type : image/png');
imagepng($img);
imagedestroy($img);
Di atas ialah contoh mudah menggunakan fungsi mb_convert_encoding(), anda boleh menukarnya mengikut keperluan anda.
Kesimpulan
Atas ialah kandungan terperinci Apakah sebab mengapa php imagettftext bercelaru? Bagaimana untuk menyelesaikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!