လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အဘယ်ကြောင့် isagecolorallocatealpha () အလုပ်မလုပ်သောပွင့်လင်းအရောင်ကအဘယ်ကြောင့်အလုပ်မလုပ်?

အဘယ်ကြောင့် isagecolorallocatealpha () အလုပ်မလုပ်သောပွင့်လင်းအရောင်ကအဘယ်ကြောင့်အလုပ်မလုပ်?

M66 2025-06-01

PHP ကိုအသုံးပြုမှုအတွက် PHP ကိုအသုံးပြုသောအခါပွင့်လင်းမြင်သာမှုနှင့်အရောင်များကိုသတ်မှတ်ရန် ISEACOLORALOCATELEALPHA () function ကိုသုံးနိုင်သည်။ ဒီ function ကရုပ်ပုံကိုအရောင်တစ်ခုသတ်မှတ်ပြီးပွင့်လင်းမြင်သာမှုကိုသတ်မှတ်ပေးတယ်။ ဤပွင့်လင်းမြင်သာမှုကိုမကြာခဏ PNG သို့မဟုတ် GIF ပုံရိပ်များကိုထုတ်လုပ်သည့်အခါမကြာခဏဆိုသလိုပွင့်လင်းမြင်သာသောဒေသများဖန်တီးရန်မကြာခဏအသုံးပြုလေ့ရှိသည်။

သို့သော်တစ်ခါတစ်ရံတွင် isionecolorallocatealpha () function ကိုအသုံးပြုသော်လည်းပွင့်လင်းမြင်သာမှုရှိခဲ့သော်လည်းပွင့်လင်းမြင်သာမှုသည်ပွင့်လင်းမြင်သာမှုကိုမဖော်ပြထားပါ။ ဘာကြောင့်ဒီလိုဖြစ်ရတာလဲ ဒီဆောင်းပါးမှာဒီပြ problem နာကိုဖြစ်စေတဲ့အကြောင်းရင်းတွေကိုလေ့လာပြီးဖြေရှင်းနည်းတွေပေးတဲ့အကြောင်းရင်းတွေကိုလေ့လာမယ်။

1 ။ ImageColorallocatealpha () function ကိုအသုံးပြုခြင်း

Imagecolorallocatealpha () function ၏ function သည် image ကိုအရောင်တစ်ခုသတ်မှတ်ရန်နှင့်အရောင်အတွက်ပွင့်လင်းမြင်သာမှုကိုဖော်ပြရန်ဖြစ်သည်။ ပွင့်လင်းမြင်သာမှုသည် alpha channel ကိုသတ်မှတ်ခြင်းဖြင့် alpha တန်ဖိုးများကို 0 (အပြည့်အ 0 အသုံးချခြင်း) အထိ (အပြည့်အဝ opaque) မှ 127 (အပြည့်အဝပွင့်လင်းမြင်သာမှု) နှင့်အတူထိန်းချုပ်ထားသည်။ ဤလုပ်ဆောင်ချက်၏ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 imagecolorallocatealpha(resource $image, int $red, int $green, int $blue, int $alpha): int
  • $ Image : Image image အရင်းအမြစ်။

  • $ အနီရောင် , $ အစိမ်းရောင် , $ အပြာ - အရောင်၏အနီရောင်, အစိမ်းရောင်နှင့်အပြာရောင်အစိတ်အပိုင်းများ, တန်ဖိုးများသည် 0 မှ 255 အထိရှိသည်။

  • $ alpha : 0 (လုံးဝ opaque) မှ 127 အထိ (လုံးဝပွင့်လင်းမြင်သာမှု) အထိ transparency တန်ဖိုး။

နမူနာကုဒ် :

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

// ပုံရိပ်ကိုပွင့်လင်းအရောင်သတ်မှတ်ပါ
$transparent_color = imagecolorallocatealpha($image, 255, 0, 0, 50);

// ပုံရိပ်တစ်ခုလုံးကိုအနီရောင်ဖြင့်ဖြည့်ပါ,နှင့်50%ပွင့်လင်းတင်
imagefill($image, 0, 0, $transparent_color);

// ပုံရိပ် output ကိုသတ်မှတ်ပါ PNG,ပွင့်လင်းနောက်ခံပံ့ပိုး
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>

အထက်ပါကုဒ်တွင် ImageColorallocatealealealpha () ကို အသုံးပြု. ပုံရိပ်အတွက်ပွင့်လင်းမြင်သာမှုနှင့်အတူအနီရောင်ကိုဖန်တီးရန်နှင့် image for image for image for image fill he image image fill he image fill fix ။

2 ။ အဘယ်ကြောင့်ပွင့်လင်းမြင်သာမှုမရှိသနည်း

ကျွန်ုပ်တို့သည် Code တွင်ပွင့်လင်းမြင်သာသောအရောင်များကိုအတိအလင်းချမှတ်သော်လည်းပွင့်လင်းမြင်သာမှုသည်တစ်ခါတစ်ရံမျှော်လင့်ထားသည့်အတိုင်းမပြပါ။ အကြောင်းမှာပွင့်လင်းမြင်သာမှုအကျိုးသက်ရောက်မှုသည်ပုံပေါ်တွင်အလိုအလျောက်ပေါ်လာမည်မဟုတ်ပါ။ ဖြစ်နိုင်သောအကြောင်းပြချက်များမှာ -

2.1 နောက်ခံအရောင်နှင့် appha channel

ပုံတစ်ပုံအတွက်ပွင့်လင်းမြင်သာသောအရောင်များချမှတ်သောအခါပုံ၏နောက်ခံသည်ပွင့်လင်းမြင်သာမှုကိုအထောက်အကူပြုရမည်။ အကယ်. ပုံသည် Transparency ကိုမပံ့ပိုးသောပုံစံဖြစ်သည်။ PNG format သည်ပွင့်လင်းမြင်သာမှုကိုထောက်ပံ့သောရုပ်ပုံပုံစံဖြစ်သည်။

ဖြေရှင်းချက် -
imagejpeg () သို့မဟုတ်အခြားပုံစံများအစားပုံရိပ်ကို output လုပ်ရန် imagepng () function ကိုအသုံးပြုပါ။

2.2 alpha ရောစပ်ထားသော mode ကိုဖွင့ ်. မရပါ

PHP မှ GD စာကြည့်တိုက်သည်ပွင့်လင်းမြင်သာမှုကိုကိုင်တွယ်ရာတွင် alpha blending mode ကိုဖွင့်ထားရန်လိုအပ်သည့်အင်္ဂါရပ်တစ်ခုရှိသည်။

ဖြေရှင်းချက် -
alpha ရောစပ်ခြင်းနှင့် alpha chinnel များကို Enable လုပ်ရန် actionalphableender () နှင့် Imagesavealpha () လုပ်ဆောင်ချက်များကိုခေါ်ဆိုပါ။ ဥပမာအားဖြင့်:

 <?php
// ဖွင့်လှစ် alpha ရောနေှာ
imagealphablending($image, false); 

// သိုထား alpha အတန်း
imagesavealpha($image, true);

ဤကိစ္စတွင် imagealphableending ($ Image False) ဟူ. ခေါ်ဆိုခြင်း ($ Image False) သည် Blending Mode ကိုပိတ်ထားလိမ့်မည်။

2.3 ပွင့်လင်းမြင်သာသောအရောင်ပြ problem နာ

ပုံရိပ်ပုံစံသည်ပွင့်လင်းမြင်သာမှုနှင့် alpha blending mode ကိုဖွင့်ထားသော်လည်းကြည်လင်သောအရောင်သည်အမြင်အာရုံကိုမမြင်နိုင်ပါ။ သင်၏ပုံတွင်အနည်းငယ်ပွင့်လင်းမြင်သာမှုရှိလျှင် (ဥပမာ - 127 ၏ alpha တန်ဖိုး) ကိုသင်အသုံးပြုပါကအကျိုးသက်ရောက်မှုကိုကြည့်ရှုရန်နောက်ခံအရောင်တွင်ပွင့်လင်းမြင်သာမှုသို့မဟုတ်ဆန့်ကျင်ဘက်ဖြစ်လိမ့်မည်။

ဖြေရှင်းချက် -
အထူးသဖြင့် debugging လုပ်သည့်အခါ, ပိုမိုမြင့်မားသောပွင့်လင်းမြင်သာမှုကိုအသုံးပြုပါ ဥပမာအားဖြင့်:

 $transparent_color = imagecolorallocatealpha($image, 255, 0, 0, 100); // 更高ပွင့်လင်းတင်

2.4 ရုပ်ပုံများကိုထုတ်လွှင့်သောအခါ Transparent ရိယာများကိုမစဉ်းစားပါ

ပုံများပြုပြင်သည့်အခါ output image ၏ format သည်ပွင့်လင်းမြင်သာသောဒေသများကိုမထောက်ပံ့ပါကပုံရိပ်ကိုသိမ်းဆည်းသည့်အခါပွင့်လင်းမြင်သာမှုအကျိုးသက်ရောက်မှုကိုမှန်ကန်စွာမလုပ်ဆောင်နိုင်ပါ။ သင်အသုံးပြုသောပုံရိပ် output function ကိုသင်အသုံးပြုသောပွင့်လင်းမြင်သာမှုနှင့်သိမ်းဆည်းထားသည့်အခါပွင့်လင်းမြင်သာမှုဆိုင်ရာအချက်အလက်များမပျောက်စေနိုင်ကြောင်းသေချာပါစေ။

ဖြေရှင်းချက် -
ပုံကို Transparent-enabled format (ဥပမာ PNG ကဲ့သို့သောပုံစံဖြင့်သိမ်းဆည်းထားကြောင်းသေချာအောင်လုပ်ပါ။

3 ။ အကျဉ်းချုပ်

ပွင့်လင်းမြင်သာမှု၏အကျိုးသက်ရောက်မှုကို PHP တွင် isonecolorallocatealpha () function မှတဆင့်အကောင်အထည်ဖော်သည်။ သို့သော်ပွင့်လင်းမြင်သာမှုအကျိုးသက်ရောက်မှုကိုမှန်ကန်စွာပြသရန်သေချာစေရန်, အောက်ပါအခြေအနေများနှင့်ကိုက်ညီရန်လိုအပ်သည်။

  1. PNG ကဲ့သို့သောပွင့်လင်းမြင်သာသောရုပ်ပုံများကိုသုံးပါ။

  2. Alpha Blending Mode ကိုဖွင့်ပြီး Alpha Channel ကိုသိမ်းပါ။

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

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