PHP ကို အသုံးပြု. PHP ကိုအသုံးပြုသည့်အခါကျွန်ုပ်တို့သည်သတ်သတ်မှတ်မှတ်စာလုံးအရွယ်အစား၏အကျင့်အကျယ်အ 0 န်းကိုရရန် ImageFontwidth () function ကိုအသုံးပြုလေ့ရှိသည်။ သို့သော် developer များစွာသည်ပြ troubl နာ များကို ကြုံတွေ့ရလိမ့်မည်။ ဤဆောင်းပါးသည်ဤပြ problem နာ၏အကြောင်းရင်းများကိုနက်နက်နဲနဲခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ယုံကြည်စိတ်ချရသောဖြေရှင်းချက်တစ်ခုပေးလိမ့်မည်။
ImageFontwidth (INT $ font) သည် PIPG GD စာကြည့်တိုက်မှပေးသော pixel width ကိုသတ်မှတ်ထားသောစာလုံးအရွယ်အစားရရန် Php GD စာကြည့်တိုက်မှပေးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်းသည် GD စာကြည့်တိုက်သို့ bitmap ဖောင့်များနှင့်သာအလုပ်လုပ်သည်။ စာလုံးအရွယ်အစားသည်များသောအားဖြင့်ကိန်း (1 မှ 5) ဖြစ်သည်။
နမူနာကုဒ်:
$width = imagefontwidth(5);
echo "font width ဖြစ်ပါတယ်:$width pixels";
ပြ the နာများသည်များသောအားဖြင့်အောက်ပါရှုထောင့်များတွင်ပေါ်ပေါက်သည်။
imagefontwidth () built-in bitmap fonts များအတွက်သာတရားဝင်သည်နှင့် Truetype ဖောင့် (TTFS) နှင့်မသက်ဆိုင်ပါ။ Developer အများအပြားသည် ttf ဖောင့်များကိုမှားယွင်းစွာတုံ့ပြန်ရန် Igrotttext () ကိုအသုံးပြုသည်။
သင် built-in ဖောင့်ကိုအသုံးပြုနေလျှင်ပင် ImageFontwidth () သည် စာလုံးတစ်လုံးတည်း၏အကျယ်ကိုပြန်ပို့သည်ကိုသတိရပါ။ အကယ်. သင်သည် string တစ်ခုလုံးကိုကြိုးဖြင့်ဖြည့်စွက်နေလျှင် string length ဖြင့်မြှောက်ရန်လိုအပ်သည်။
$font = 5;
$text = "Hello";
$width = imagefontwidth($font) * strlen($text);
string တွင် Multibyte ဇာတ်ကောင် များ ပါ 0 င်ပါက,
$width = imagefontwidth($font) * mb_strlen($text, 'UTF-8');
PHP ၏ bitmap ဖောင့်များကိုကိုယ်တိုင် 0 င်ရန်မလိုအပ်ပါ။
imagefontwidth () font နံပါတ် 1 ~ 5 အကွာအဝေးတွင်ရှိရန်နှင့် strlen () သို့မဟုတ် mb_strlen ကိုသုံးရန်သေချာစေရန် imagefontwidth () ကိုတိုက်ရိုက်သုံးပါ။
$font = 3;
$text = "Welcome";
$width = imagefontwidth($font) * strlen($text);
TTF ဖောင့်များအတွက် ImageFontwidth () သည်မမှန်ကန်ပါ။ သတ်မှတ်ထားသောဖောင့်အောက်တွင် string ၏ချည်နှောင်ထားသော သေတ္တာ () ကို သင်အသုံးပြုရမည်။ ထို့နောက်ကိုသွဒီနိတ်များအရ width ကိုတွက်ချက်ရမည်
$fontFile = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";
$fontSize = 14;
$text = "Welcome";
$bbox = imagettfbbox($fontSize, 0, $fontFile, $text);
$width = abs($bbox[2] - $bbox[0]);
ဤဥပမာတွင် ဒေါ်လာ BOOB သည် စာသား 8 ခုကိုကိုယ်စားပြုသောဒြပ်စင် 8 ခုကိုပြန်လည်ရရှိခဲ့သည်။ အပေါ်ယံညာဘက်ထောင့်နှင့်ဘယ်ဘက်အပေါ်ထောင့်အကြားအလျားလိုက်ဝင်ရိုးခြားနားချက်ဖြင့် width ကိုတွက်ချက်နိုင်သည်။
$img = imagecreate(200, 50);
$bg = imagecolorallocate($img, 255, 255, 255);
$color = imagecolorallocate($img, 0, 0, 0);
$fontFile = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";
$text = "Hello World";
$fontSize = 12;
$bbox = imagettfbbox($fontSize, 0, $fontFile, $text);
$textWidth = abs($bbox[2] - $bbox[0]);
$x = (200 - $textWidth) / 2;
$y = 30;
imagettftext($img, $fontSize, 0, $x, $y, $color, $fontFile, $text);
header("Content-Type: image/png");
imagepng($img);
imagedestroy($img);
ဤနည်းအားဖြင့် TTF ဖောင့်များပင်တိကျသောအကျယ်နှင့်ဗဟိုပြုအနေအထားရရှိရန်သေချာသည်။
agestring () နှင့် agouettextext ကိုမရောနှောပါနှင့် () - သူတို့က bitmap နှင့် ttf ဖောင့်များအတွက်သင့်တော်သည်။
ImageFontwidth () မှရရှိသောရလဒ်ကို DPI ချိန်ညှိချက်များကြောင့်မထိခိုက်ပါ ။
အခြားဆာဗာသို့ချထားပါက Font ဖိုင်လမ်းကြောင်းတည်ရှိပြီးလက်လှမ်းမီကြောင်းအတည်ပြုရန်သေချာပါစေ။ ဥပမာ - https://m66.net/fonts/dejavusans.ttf
ImageFontwidth () သည် မှားယွင်းသောအကျယ်ကိုပြန်လည်ရောက်ရှိသောအခါအများအားဖြင့်သဟဇာတဖြစ်သောဖောင့်အမျိုးအစားများကိုအသုံးပြုခြင်းသို့မဟုတ်စုစုပေါင်းစာလုံးအရေအတွက်ကိုလျစ်လျူရှုခြင်းကြောင့်ဖြစ်သည်။ ဤလုပ်ဆောင်မှုအတိုင်းအတာကိုနားလည်ခြင်းနှင့် ttf ဖော င့်များကို ကိုင်တွယ်ဖြေရှင်းသည့်အခါ TTF ဖောင့်များနှင့်ဆက်ဆံရာတွင်ပြ the နာကိုဖြေရှင်းရန်သော့ချက်ဖြစ်သည်။ ကိရိယာများကိုမှန်ကန်စွာရွေးချယ်ခြင်းအားဖြင့်သာပုံရိပ်များပြုပြင်သောအခါသင်လိုချင်သောတိကျသောဟန်ဆောင်မှုနှင့်အကျိုးသက်ရောက်မှုကိုရရှိနိုင်ပါ။