تبدیل متن فارسی و utf-8 به عکس یا تصویر با php
به کمک این آموزش و تابع php که در ادامه مطلب به آن میرسیم ، قصد داریم متون فارسی را به عکس تبدیل کنیم و حتی رنگ متن و پس زمینه را نیز تعیین کنیم.
تبدیل متن به عکس با php کار سختی نیست ولی وقتی متون فارسی یا عربی وسط بیاید کمی کار متفاوت می شود.
برای این تبدل از کتابخانه GD در php استفاده می کنیم که در همه هاست ها فعال است و نگران فعال نبودن این اکستیشن نباشید.
<!--?php
function text2image($str="",$size=12,$text_color=array(0,0,0),$bg_color=array(255,255,255)){
$font_path="";
$angle = 0;
if(!function_exists('getTextBox') ){
function getTextBox($font_path, $text, $size, $angle)
{
$box = imagettfbbox($size, $angle, $font_path, $text);
$minX = min(array($box[0],$box[2],$box[4],$box[6]));
$maxX = max(array($box[0],$box[2],$box[4],$box[6]));
$minY = min(array($box[1],$box[3],$box[5],$box[7]));
$maxY = max(array($box[1],$box[3],$box[5],$box[7]));
return array("width" => ($maxX - $minX), "height" => ($maxY - $minY));
}
}
$F = getTextBox($font_path,$str,$size,$angle);
$im = imagecreatetruecolor($F['width']+5, $F['height']+5);
$text_color = imagecolorallocate($im, $text_color[0], $text_color[1], $text_color[2]);
$bg_color = imagecolorallocate($im, $bg_color[0], $bg_color[1], $bg_color[2]);
imagefilledrectangle($im, 0, 0, $F['width']+5, $F['height']+5, $bg_color);
imagettftext($im,$size, 0, 0, $F['height'], $text_color, $font_path, $str);
ob_start();
imagepng($im);
imagedestroy($im);
return [removed].base64_encode(ob_get_clean());
}
?-->
در تابع بالا در ابتدای تابع متغیر font_path را باید مقدار دهی کنید. یک فونت فارسی از نوع ttf را در مسیری در هاست خود قرار دهید و مسیر آن را در این متغیر بگذارید . توجه کنید مسیر یا path را قرار دهید نه آدرس url . مثلا اگر فایل فونت شما دقیقا در کنار فایل حاوی این تابع است کافیست فقط نام فایل فونت را بنویسید که یعنی فونت دقیقا در کنار فایل من است مثلا:
$font_path="iranssanse.ttf";
برای استفاده از تابع بالا کافیست در تگ img خود مقدار src را خروجی این تابع قرار دهید
src="<!--?php echo text2image('متن من') ?-->"
ارسال نظر
جهت قرار دادن کد در متن کامنت ، متن مورد نظر را انتخاب کنید و دکمه بالا را بزنید