PHP တွင် Image processing လုပ်သည့်အခါ Imagecolorallocatealpha () သည်အလွန်အရေးကြီးသော function တစ်ခုဖြစ်သည်။ ၎င်းသည်အရောင်များကိုသတ်မှတ်ရုံသာမကပွင့်လင်းမြင်သာမှုကိုလည်းထိန်းချုပ်သည်။ သို့သော် developer များစွာသည်ပုံမှန်မဟုတ်သည့်ပုံကြမ်းပွင့်လင်းမြင်သာမှုပြ problems နာများကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။
ဤဆောင်းပါးသည်ဤပြ problem နာကိုအသေးစိတ်လေ့လာရန်ဤ ပြ problem နာကိုအသေးစိတ်လေ့လာလိမ့်မည်။
imagecolorallocatealpha () ကို GD စာကြည့်တိုက်အခြေပြုရုပ်ပုံများကိုပွင့်လင်းမြင်သာမှုနှင့်အတူအရောင်များကိုသတ်မှတ်ရန်အသုံးပြုသည်။
၎င်း၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )
parameter သည်ဖော်ပြချက်:
$ Image : ImageCreate () သို့မဟုတ် imagecreatetuecolor () မှဖန်တီးထားသောပုံရိပ်အရင်းအမြစ်တစ်ခု။
$ အနီရောင် , $ အစိမ်းရောင် , $ အပြာ : RGB အရောင်အစိတ်အပိုင်းများ, 0-255 အကွာအဝေး။
$ Alpha : Transparency တန်ဖိုး 0-127 အထိ။
မှတ်စု: alpha သည် 0 မှ 255 မဟုတ်ဘဲ 0 (လုံးဝမအောင်မြင်ပါ) 127 (လုံးဝပွင့်လင်းမြင်သာမှု) အထိဖြစ်သည် ။
developer များစွာကိုပထမဆုံးအမှားလုပ်မိသောအမှားမှာ - alpha ၏တန်ဖိုးသည် RGB ကဲ့သို့ 0-255 ဖြစ်သည်ဟုသူတို့ထင်သော်လည်း၎င်းတို့သည် 255 သို့တိုက်ရိုက်ပစ္စည်းပစ္စယများဖြစ်သည်။
ဥပမာတစ်ခုကိုကြည့်ရအောင်။
<?php
$img = imagecreatetruecolor(200, 200);
$color = imagecolorallocatealpha($img, 255, 0, 0, 255); // အမှား
ALPHA set သည် 255 နှစ်ရှိပြီ 255 နှစ်ရှိပြီး GD စာကြည့်တိုက်သည် 127 အထိသာလက်ခံသည်။ အဘယ်ကြောင့်ဆိုသော်၎င်းသည်အကွာအဝေးမှ ထွက်. GD သည် 127 အဖြစ်ဆက်ဆံလိမ့်မည်။
မှန်ကန်သောအရေးအသား -
<?php
$img = imagecreatetruecolor(200, 200);
$color = imagecolorallocatealpha($img, 255, 0, 0, 0); // opacity အနီရောင်
$semi_transparent = imagecolorallocatealpha($img, 255, 0, 0, 64); // အနီရောင်အနီရောင်
ဘာဖြစ်လို့လဲဆိုတော့ GD စာကြည့်တိုက်က alpha value ကိုဒီနည်းနဲ့နားလည်ထားလို့ပဲ။
0: လုံးဝ opaque
127: လုံးဝပွင့်လင်း
အကယ်. သင်သည် 255 ကိုဖြည့်ပါက GD သည် MIN ($ alpha, 127) ကို သုံးလိမ့်မည်။ ဆိုလိုသည်မှာအများဆုံးပွင့်လင်းမြင်သာမှုအဖြစ်မှတ်ယူလိမ့်မည်။ ဤသည်ကို ဦး ဆောင်:
ငါမူလကအနီရောင်ဆွဲချင်တယ်, ဒါပေမယ့်ငါမမြင်ရဘူး
ငါမူလက translucent ဆွဲချင်တယ်, ဒါပေမယ့်လုံးဝပွင့်လင်းမြင်သာမှုရှိဖို့ထွက်လှည့်။
? သတိရ: alpha range သည် 0-127 မဟုတ်ဘဲ 0-1255 ဖြစ်သည်။
အကယ်. သင် (CSS သို့မဟုတ် RGBA သာမန်တန်ဖိုးများကဲ့သို့) Transparency Designs ကိုအသုံးပြုပါကပြောင်းလဲခြင်းပြုလုပ်ရန်လိုအပ်သည်။
$css_alpha = 128; // ယူဆသော 0–255 ညှစ်
$gd_alpha = intval(127 * (255 - $css_alpha) / 255); // ကူးပြောင်း GD အသုံးပြုတန်ဖိုးကို
၎င်းသည် PHP တွင်တသမတ်တည်းပွင့်လင်းမြင်သာမှုရှိစေရန်သေချာစေလိမ့်မည်။
ဤအရာအားလုံးကိုပြည့်စုံသောဥပမာတစ်ခုဖြင့်အတူတကွကြိုးချကြပါစို့။