လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> isaugolorallocatealpha ကို အသုံးပြု. opacity ကိုချွေတာရန်အတွက် PNG အတွက်အကြောင်းပြချက်များ

isaugolorallocatealpha ကို အသုံးပြု. opacity ကိုချွေတာရန်အတွက် PNG အတွက်အကြောင်းပြချက်များ

M66 2025-05-31

PHP ၏ GD စာကြည့်တိုက်ကိုပုံရိပ်များပြုလုပ်ရန် PHP ၏ GD စာကြည့်တိုက်ကိုအသုံးပြုသောအခါ developer များစွာသည်ထိုကဲ့သို့သောရှုပ်ထွေးမှုများကိုကြုံတွေ့ရလိမ့်မည်။

" Imagecolorallocatealpha နဲ့ပွင့်လင်းမြင်သာတဲ့အရောင်ကိုငါရှင်းရှင်းလင်းလင်းထားတယ်,

ဒီပြ problem နာကိုဂရုတစိုက်ခွဲခြမ်းစိတ်ဖြာကြည့်ကြစို့။

အဆိုပါပြ 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 ဖြစ်ပါတယ်တွေ့ရှိခဲ့ပါတယ်။

အဘယ်ကြောင့်?

အဓိကအကြောင်းပြချက် - ပျောက်နေသည့် alpha channel enabled Save

GD စာကြည့်တိုက်၏ imagecolorallocealpha () GD စာကြည့်တိုက်၏အရောင်သည် alpha information ပါ 0 င်သည့်အရောင်ကိုသာသတ်မှတ်ထားခြင်းဖြစ်သည်။

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

  1. Save to Alpha Channel ကိုဖွင့်ပါ PNG ကိုချွေတာသည့်အခါ alpha channel ကိုထည့်သွင်းရန် GD စာကြည့်တိုက်ကိုပြောပြရန် Imagesavealpha ($ image, true) ကိုသုံးပါ။

  2. 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 ထိန်းသိမ်းခြင်းအတွက်သော့ချက်ဖြစ်သည်။