လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အလိုအလျောက်ဖောင့် scaling: imagefontwidth () နှင့် font နံပါတ်ညှိနှိုင်းမှုပေါင်းစပ်

အလိုအလျောက်ဖောင့် scaling: imagefontwidth () နှင့် font နံပါတ်ညှိနှိုင်းမှုပေါင်းစပ်

M66 2025-05-31

PHP ၏ GD စာကြည့်တိုက်ကို image text processing အတွက် PHP ၏ GD စာကြည့်တိုက်ကိုအသုံးပြုသောအခါစာသားအရွယ်အစားသည်သတ်မှတ်ထားသောအကျယ်နှင့်မကိုက်ညီသောပြ problem နာကိုသင်မကြာခဏကြုံတွေ့ရတတ်သည်။ အထူးသဖြင့်ကျွန်ုပ်တို့သည်စာသားကိုပုံပေါ်ရှိအကျယ်တစ်ခုပေါ်တွင်အပြည့်အဝအသုံးချလိုပါကစာလုံးအရွယ်အစားကိုချိန်ညှိခြင်းသော့ချက်ဖြစ်သည်။ ဖောင့်အရေအတွက်နှင့်ပေါင်းစပ်ထားသော PHP တွင် ImageFontwidth () function သည်စာသားအကျယ်ကိုပိုမိုတွက်ချက်ရန်ကျွန်ုပ်တို့အားကူညီနိုင်သည်။

စာသားအရွယ်အစားကိုအလိုအလျောက်ညှိခြင်း၏အကျိုးသက်ရောက်မှုကိုအောင်မြင်ရန် ImageFontwidth () နှင့် font နံပါတ်ကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။


1 ။ ImageFontwidth () နှင့်ဖောင့်အရေအတွက်ကိုနားလည်ပါ

ImageFontwidth (Int $ font) သည် pixel တစ်ခု၏အကျယ်ကို pixels in built-in font နံပါတ်ကိုသတ်မှတ်သည့် pixels ၏အကျယ်ကိုပြန်ပို့သည်။ GD စာကြည့်တိုက်တွင် Built-in fonts 5 ခု, နံပါတ် 1 မှ 5 နှင့်စာလုံးအရွယ်အစားသည် sequence ကိုတိုးပွားစေသည်။

ဖောင့်နံပါတ် ဖောင့်အရွယ်အစား (pixels) ဥပမာပြပါ
1 5x8 အနည်းဆုံး font
2 6x12 သေးငယ်တဲ့ဖောင့်
သုံး 7x13 အလတ်စား font
4 8x15 ပိုကြီးတဲ့ဖောင့်
5 9x15 အများဆုံး font

ဖောင့်နံပါတ်များနှင့်အတူကျွန်ုပ်တို့သည် font width ကိုလျင်မြန်စွာရ။ စာသား၏စာပိုဒ်တစ်ခုလုံးကိုအကျယ်တွက်ချက်နိုင်သည်။


2 ။ အလိုအလျောက်ဖောင့်အရွယ်အစားညှိ၏အဓိကစိတ်ကူး

စာသား စာသား နှင့်အလိုရှိသောအများဆုံးအကျယ် Maxwidth ရှိသည့်ဆိုပါစို့။ စာသားအကျယ်ကို Maxwidth ထက်မကျော်ရန်နှင့်စာလုံးကြီးကြီးသာပိုမိုကောင်းမွန်သည်ဆိုပါစို့။

အောက်ပါအတိုင်းအဆင့်များမှာ -

  1. အများဆုံးစာလုံးအရေအတွက်နှင့်စတင်ပါ (5) ။

  2. စာသားအရှည်တစ်ခုလုံးကိုတွက်ချက်ရန် ImageFontwidth () ကိုစာသားအရှည်ဖြင့်မြှောက်ပါ။

  3. အကယ်. အကျယ်သည် Maxwidth ထက်နည်းသည်သို့မဟုတ်ညီမျှလျှင်စာလုံးအရွယ်အစားကိုရွေးပါ။

  4. အကယ်. အားလုံးသည်ကျော်လွန်နေပါကအနိမ့်ဆုံးဖောင့်ကိုရွေးချယ်ပါ။


3 ။ Code ဥပမာ

ဤတွင်သင့်တော်သောစာလုံးအရွယ်အစားကိုမည်သို့အလိုအလျောက်ရွေးချယ်ပြီးရုပ်ပုံပေါ်တွင်စာသားဆွဲရမည်ကိုအပြည့်အဝဥပမာတစ်ခုရှိသည်။

 <?php
// ဇာတ်ကောင်အကြောင်းအရာများ
$text = "အလိုအလျောက်စာလုံးအရွယ်အစားဥပမာ";
// မျှော်မှန်းအများဆုံးအကျယ်(တခု:pixels)
$maxWidth = 200;

// မှစာလုံးအရေအတွက်ကိုစမ်းကြည့်ပါ5ရောက်လာ1
$font = 5;
for ($i = 5; $i >= 1; $i--) {
    $textWidth = imagefontwidth($i) * strlen($text);
    if ($textWidth <= $maxWidth) {
        $font = $i;
        break;
    }
}

// ပုံတစ်ပုံဖန်တီးပါ,အကျယ် $maxWidth,အမြင့် font အမြင့်ဖြစ်ပါတယ်
$fontHeight = imagefontheight($font);
$im = imagecreatetruecolor($maxWidth, $fontHeight + 10);

// အရောင်ဖြန့်ဖြူး
$bgColor = imagecolorallocate($im, 255, 255, 255);  // အဖြူရောင်နောက်ခံ
$textColor = imagecolorallocate($im, 0, 0, 0);      // အနက်ရောင်စာသား

// နောက်ခံဖြည့်ပါ
imagefilledrectangle($im, 0, 0, $maxWidth, $fontHeight + 10, $bgColor);

// စာသားစတင်တွက်ချက်Xညီညာစေ,ဗဟိုပြုနားလည်သဘောပေါက်
$textWidth = imagefontwidth($font) * strlen($text);
$x = ($maxWidth - $textWidth) / 2;
$y = 5;

// output စာသား
imagestring($im, $font, $x, $y, $text, $textColor);

// output ကိုပုံ
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>

4 ။ ဖော်ပြချက်

  • ဤနည်းလမ်းသည်စာသားအကျယ်ကိုလျင်မြန်စွာတွက်ချက်ရန်အတွက် GD စာကြည့်တိုက်၏ built-in ဖောင့်များ၏ပုံသဏ် finds ်ဌာန်းသည့်ဝိသေသလက္ခဏာများကိုအသုံးပြုသည်။

  • strlen () အင်္ဂလိပ်နှင့်တစ်ကိုယ်ရေစောင်ဇာတ်ကောင်များအတွက်သင့်တော်သည်။ အကယ်. ၎င်းတွင်တရုတ်နှင့်အခြား multi-byte အက္ခရာများပါ 0 င်ပါက MB_strlen () ကို အသုံးပြုရန်နှင့်တွက်ချက်မှုယုတ္တိဗေဒကိုချိန်ညှိရန်အကြံပြုပါသည်။

  • အကယ်. သင်သည် TTF ဖောင့်များကိုသုံးရန်လိုအပ်ပါကပိုမိုတိကျသောစာသားအကျယ်ရရှိရန် imagettfbox () ကို သုံးနိုင်သည်။

  • ဤဖြေရှင်းချက်သည်အလွယ်တကူနှင့်အကျိုးရှိသည်။


5 ။ ရည်ညွှန်း link