PHP ၏ GD စာကြည့်တိုက်ကိုပုံရိပ်များပြုလုပ်ရန် PHP ၏ GD စာကြည့်တိုက်ကိုအသုံးပြုသောအခါ developer များစွာသည်ထိုကဲ့သို့သောရှုပ်ထွေးမှုများကိုကြုံတွေ့ရလိမ့်မည်။
" Imagecolorallocatealpha နဲ့ပွင့်လင်းမြင်သာတဲ့အရောင်ကိုငါရှင်းရှင်းလင်းလင်းထားတယ်,
ဒီပြ problem နာကိုဂရုတစိုက်ခွဲခြမ်းစိတ်ဖြာကြည့်ကြစို့။
ပထမ ဦး စွာသင်ဤကဲ့သို့သောကုဒ်ရေးသားခဲ့သည်ဆိုပါစို့:
<?php
$width = 200;
$height = 100;
// စစ်မှန်သောအရောင်ပုံရိပ်ကိုဖန်တီးပါ
$image = imagecreatetruecolor($width, $height);
// ပွင့်လင်းမြင်သာမှုနှင့်အတူအရောင် assign
// parameter အမိန့်:R, G, B, Alpha(0 လုံးဝ opaque,127 လုံးဝပွင့်လင်း)
$transparentColor = imagecolorallocatealpha($image, 255, 0, 0, 127);
// ဒီအရောင်နှင့်နောက်ခံဖြည့်ပါ
imagefill($image, 0, 0, $transparentColor);
// အဖြစ်သိမ်းဆည်းပါ PNG
imagepng($image, 'output.png');
// အရင်းအမြစ်များကိုဖျက်ဆီးသည်
imagedestroy($image);
?>
သငျသညျအနီနောက်ခံပေါ်တွင်လုံးဝပွင့်လင်း PNG ပုံရိပ်ကိုထုတ်လုပ်ရန်မျှော်လင့်ထားပေမယ့်ဖိုင်ကိုဖွင့်ပြီးနောက်နောက်ခံအနီရောင် opaque ဖြစ်ပါတယ်တွေ့ရှိခဲ့ပါတယ်။
အဘယ်ကြောင့်?
GD စာကြည့်တိုက်၏ imagecolorallocealpha () GD စာကြည့်တိုက်၏အရောင်သည် alpha information ပါ 0 င်သည့်အရောင်ကိုသာသတ်မှတ်ထားခြင်းဖြစ်သည်။
PNG သို့စနစ်တကျသိမ်းဆည်းထားသောပွင့်လင်းမြင်သာမှုအချက်အလက်များကိုပြုလုပ်ရန်အရာနှစ်ခုကိုအတိအလင်းပြုလုပ်ရန်လိုအပ်သည်။
Save to Alpha Channel ကိုဖွင့်ပါ PNG ကိုချွေတာသည့်အခါ alpha channel ကိုထည့်သွင်းရန် GD စာကြည့်တိုက်ကိုပြောပြရန် Imagesavealpha ($ image, true) ကိုသုံးပါ။
alpha mix ကိုပိတ်ထားပါ (optional)
ပုံရိပ် pixels များကိုမရောင့်ရဲသည့်အခါအရောင်များကိုမရောမရောစပ်မသွားစေရန် actealealphableend ($ image, false) ကိုသုံးပါ။
<?php
$width = 200;
$height = 100;
// စစ်မှန်သောအရောင်ပုံရိပ်ကိုဖန်တီးပါ
$image = imagecreatetruecolor($width, $height);
// ရုပ်သိမ်းခြင်း alpha ရောနေှာ(စနစ်တကျပွင့်လင်းနောက်ခံကယ်တင်ရန်ရန်)
imagealphablending($image, false);
// သိမ်းဆည်းပါ alpha အချက်အလက်အချက်အလက်
imagesavealpha($image, true);
// 分配一个လုံးဝပွင့်လင်း的红色
$transparentColor = imagecolorallocatealpha($image, 255, 0, 0, 127);
// ဒီအရောင်နှင့်နောက်ခံဖြည့်ပါ
imagefill($image, 0, 0, $transparentColor);
// အဖြစ်သိမ်းဆည်းပါ PNG
imagepng($image, 'output.png');
// သို့မဟုတ်တိုက်ရိုက် output ကိုမှဝဘ်စာမျက်နှာကိုသိမ်းဆည်းပါ
// header('Content-Type: image/png');
// imagepng($image);
// အရင်းအမြစ်များကိုဖျက်ဆီးသည်
imagedestroy($image);
?>
ဤကုဒ်သည် PNG ပုံရိပ်ကိုပွင့်လင်းသောအနီရောင်နောက်ခံဖြင့်ထုတ်ပေးသည်။
အကယ်. သင်သည် PHP တွင် ismarecolorallocatealpha () တွင်ပွင့်လင်းမြင်သာသောအရောင်ကိုသတ်မှတ်ထားပါကသိမ်းဆည်းထားသော PNG သည်အဆင်သင့်ဖြစ်နေသည်,
? ISEALEALEPANDESSESSESSESS ($ Image, False) ကို သုံးပါ။
? Imagesavealpha ကိုသုံးပါ ($ Image, True)
ဤအဆင့်နှစ်ဆင့်သည်ပွင့်လင်းမြင်သာသော PNG ထိန်းသိမ်းခြင်းအတွက်သော့ချက်ဖြစ်သည်။