PHP တွင် image text typeeting ကိုကိုင်တွယ်သောအခါစာသားအနေဖြင့်စာသားအပေးအယူအမျိုးမျိုး၏ပြ problem နာကိုသင်မကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ GD စာကြည့်တိုက်တွင် imagefontwidth () function ကိုအသုံးပြုခြင်းသည်သတ်မှတ်ထားသောစာလုံး၏အကြောင်းကိုအလွယ်တကူရနိုင်သည်။ ဤဆောင်းပါးသည်စာသားအပြည့်အစုံကိုအထောက်အကူပြုရန်စာသားလိုင်းမျိုးစုံအကျယ်ကိုအလိုအလျောက်တွက်ချက်ရန် ImageFontwidth () function ကိုအလိုအလျောက်တွက်ချက်ရန်မည်သို့အသေးစိတ်ဖော်ပြထားသည်။
ImageFontwidth () သည် GD စာကြည့်တိုက်မှအက္ခရာစဉ်တစ်ခုစီကို pixels ဖြင့်သတ်မှတ်ထားသော font တစ်ခုစီကို pixels ဖြင့်ရရန်ထောက်ပံ့ပေးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
int imagefontwidth(int $font);
Parameter $ ဖောင့် သည်စာလုံးအရွယ်အစားဖြစ်ပြီးတန်ဖိုးသည်များသောအားဖြင့် 1 မှ 5 ဖြစ်ပြီး GD တွင်တည်ဆောက်ထားသောဖောင့်အရွယ်အစားငါးခုနှင့်သက်ဆိုင်သည်။
function ကိုဖောင့်ထဲမှာဇာတ်ကောင်တစ်ခုစီ၏အကျယ်ကိုပြန်ပို့သည်။
ဤလုပ်ဆောင်မှုမှတစ်ဆင့်စာသားမှဇာတ်ကောင်တစ်ခုစီမှသိမ်းပိုက်ထားသော pixels အရေအတွက်ကိုကျွန်ုပ်တို့သိနိုင်သည်။
ရုပ်ပုံပေါ်ရှိစာသားများကိုမျဉ်းကြောင်းအမျိုးမျိုးဆွဲရန်နှင့်လိုင်းတစ်ခုချင်းစီကိုဗဟိုပြုသို့မဟုတ်လက်ဝဲ - alignments ရှိသည်ဆိုပါစို့။ စာသားအမျိုးမျိုးတွင်မကြာခဏကွဲပြားခြားနားသောအရှည်များရှိသည်။ string ၏ width ကိုတိုက်ရိုက်တွက်ချက်ခြင်းနှင့်ဆွဲယူခြင်း,
အဖြေမှာအက်ခရာတစ်ခုတည်း၏အကျယ်ကိုတွက်ချက်ရန် imagefontwidth () ကို ပထမဆုံးအသုံးပြုရန်မှာစာသား၏သက်တမ်းကို အခြေခံ. အလိုအလျောက် alignment ကိုဆုံးဖြတ်ရန် string ၏အရှည်အပေါ် အခြေခံ. လိုင်းတစ်ခုစီ၏အကျယ်ကိုတွက်ချက်ရန်ဖြစ်သည်။
အောက်ပါဥပမာက 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);
?>
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 ကိုရိုက်ရန်,