လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> စာသား alignment ကိုပိုမိုလွယ်ကူစေရန် Multi-Line စာသား layout ကိုအလိုအလျောက်တွက်ချက်နည်း။

စာသား alignment ကိုပိုမိုလွယ်ကူစေရန် Multi-Line စာသား layout ကိုအလိုအလျောက်တွက်ချက်နည်း။

M66 2025-06-30

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

ImageFontwidth () function ကဘာလဲ။

ImageFontwidth () သည် GD စာကြည့်တိုက်မှအက္ခရာစဉ်တစ်ခုစီကို pixels ဖြင့်သတ်မှတ်ထားသော font တစ်ခုစီကို pixels ဖြင့်ရရန်ထောက်ပံ့ပေးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -

 int imagefontwidth(int $font);

Parameter $ ဖောင့် သည်စာလုံးအရွယ်အစားဖြစ်ပြီးတန်ဖိုးသည်များသောအားဖြင့် 1 မှ 5 ဖြစ်ပြီး GD တွင်တည်ဆောက်ထားသောဖောင့်အရွယ်အစားငါးခုနှင့်သက်ဆိုင်သည်။

function ကိုဖောင့်ထဲမှာဇာတ်ကောင်တစ်ခုစီ၏အကျယ်ကိုပြန်ပို့သည်။

ဤလုပ်ဆောင်မှုမှတစ်ဆင့်စာသားမှဇာတ်ကောင်တစ်ခုစီမှသိမ်းပိုက်ထားသော pixels အရေအတွက်ကိုကျွန်ုပ်တို့သိနိုင်သည်။

Multi-line text layout ၏စိန်ခေါ်မှုများ

ရုပ်ပုံပေါ်ရှိစာသားများကိုမျဉ်းကြောင်းအမျိုးမျိုးဆွဲရန်နှင့်လိုင်းတစ်ခုချင်းစီကိုဗဟိုပြုသို့မဟုတ်လက်ဝဲ - alignments ရှိသည်ဆိုပါစို့။ စာသားအမျိုးမျိုးတွင်မကြာခဏကွဲပြားခြားနားသောအရှည်များရှိသည်။ string ၏ width ကိုတိုက်ရိုက်တွက်ချက်ခြင်းနှင့်ဆွဲယူခြင်း,

အဖြေမှာအက်ခရာတစ်ခုတည်း၏အကျယ်ကိုတွက်ချက်ရန် imagefontwidth () ကို ပထမဆုံးအသုံးပြုရန်မှာစာသား၏သက်တမ်းကို အခြေခံ. အလိုအလျောက် alignment ကိုဆုံးဖြတ်ရန် string ၏အရှည်အပေါ် အခြေခံ. လိုင်းတစ်ခုစီ၏အကျယ်ကိုတွက်ချက်ရန်ဖြစ်သည်။

နမူနာကုဒ်: Multi-line text width ကိုအလိုအလျောက်တွက်ချက်ခြင်းနှင့်ဆွဲခြင်း

အောက်ပါဥပမာက PHP ၏ GD စာကြည့်တိုက်ကို Completfontwidth () ကိုဗဟိုပြုထားသည့် PHP ၏ GD စာကြည့်တိုက်ကိုမည်သို့အသုံးပြုရမည်ကိုပြသသည်။

 <?php
// အလွတ်တစ်ခုဖန်တီးပါ
$width = 400;
$height = 200;
$image = imagecreatetruecolor($width, $height);

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

// နောက်ခံဖြည့်ပါ
imagefilledrectangle($image, 0, 0, $width, $height, $bgColor);

// ရေးဆွဲခံရဖို့စာသားလိုင်းမျိုးစုံ
$textLines = [
    "ဤသည်စာသား၏ပထမ ဦး ဆုံးလိုင်းဖြစ်ပါတယ်",
    "စာသား၏ဒုတိယလိုင်းသည်အနည်းငယ်ကြာသည်",
    "တတိယလိုင်း"
];

// စာလုံးအရွယ်အစားကိုရွေးချယ်ပါ
$font = 5; // GDbuilt-in ဖောင့်များ,1-5အကြား

// font width နှင့်အမြင့်တွက်ချက်
$fontWidth = imagefontwidth($font);
$fontHeight = imagefontheight($font);

// ကန ဦး ပုံဆွဲစတင်Yညီညာစေ
$startY = 20;

// စာသားတစ်ခုချင်းစီကိုတဆင့်ကြားမှာ,အကျယ်ကိုတွက်ချက်ခြင်းနှင့်ဗဟိုတွင်ဆွဲပါ
foreach ($textLines as $line) {
    $lineLength = strlen($line); // မှတ်သား:ဒီမှာအသုံးပြုခဲ့သည်strlenစင်ကြယ်သောအင်္ဂလိပ်များအတွက်သင့်တော်သည်,သင့်တွင်တရုတ်ရှိလျှင် ကျေးဇူးပြု. သုံးပါmb_strlenနှင့်ဇာတ်ကောင် encoding သေချာအောင်လုပ်ပါ
    $lineWidth = $fontWidth * $lineLength;

    // ရေတွက်Xညီညာစေ,Center
    $x = ($width - $lineWidth) / 2;

    // စာသားဆွဲပါ
    imagestring($image, $font, $x, $startY, $line, $textColor);

    // နောက်လိုင်းYညီညာစေ
    $startY += $fontHeight + 10; // လိုင်းအကွာအဝေး10pixels
}

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

Code ဖော်ပြချက်:

  • imagefontwidth () နှင့် strlen ဖြင့်လက်ရှိလိုင်းစာသားအကျယ်ကိုတွက်ချက်ပါ။

  • စာသားအကျယ်ကိုနုတ်ရန်ပုံကို သုံး. ဗဟိုပြုချိန်ကိုတွက်ချက်ရန် 2 ကို 2 ပိုင်းခွဲပါ။

  • စာသား၏လိုင်းမျိုးစုံကို sequenception တွင်ဆွဲပါ။

  • တရုတ်ကြိုးအကျယ်ကိုတွက်ချက်မှုကိုဂရုပြုပါ။ strlen () သည် bytes အရေအတွက်ကိုရေတွက်သည်။ ၎င်းသည်တွက်ချက်မှုအမှားများကိုဖြစ်ပေါ်စေနိုင်သည်။ MB_strinlen () နှင့်သင့်လျော်သောဇာတ်ကောင် encoding ကိုပေါင်းစပ်ရန်အကြံပြုသည်။

တရုတ်ကြိုးများ၏အကျယ်တွက်ချက်မှုကိုမည်သို့ကိုင်တွယ်ရမည်နည်း။

ImageFontwidth () ဇာတ်ကောင်တစ်ခုတည်းသောအကျယ်ကိုသာရနိုင်သော်လည်းတရုတ်စာလုံးများသည်များသောအားဖြင့်များသောအားဖြင့်ဖြစ်သည်။ တိကျမှန်ကန်မှုကိုသေချာစေရန် MB_strlen () ကို အသုံးပြုရန်အကောင်းဆုံးဖြစ်သည်။

 $lineLength = mb_strlen($line, 'UTF-8');

PHP ဖိုင်နှင့် operating ပတ်ဝန်းကျင်ကို UTF-8 encoding ကိုအထောက်အကူပြုကြောင်းအတည်ပြုပါ။

အကျဉ်းချုပ်

ImageFontwidth () function သည် PHPG GD စာကြည့်တိုက်တွင်ရိုးရိုးရှင်းရှင်းသော်လည်းအလွန်လက်တွေ့ကျသောကိရိယာတစ်ခုဖြစ်သည်။ developer များက developer များအနေဖြင့် Multi-line text width များကိုအလိုအလျောက်တွက်ချက်ရန်နှင့်ပိုမိုသင့်တင့်သောစာသားအပြင်အဆင်နှင့် alignment ကိုအောင်မြင်ရန်ကူညီနိုင်သည်။ စာသားလိုင်းတစ်ခုစီမှသိမ်းပိုက်ထားသော pixel အကျယ်ကိုတွက်ချက်ရန် string longth ကိုတွက်ချက်ရန် string latsth ကိုပေါင်းစပ်ခြင်းအားဖြင့်ဗဟိုပြုသို့မဟုတ်အခြား alignment ကိုရိုက်ရန်,