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

ပွင့်လင်းမြင်သာသောအလွှာများကိုအခြားအလွှာများဖြင့်ရေးသားခြင်းကိုမည်သို့ရှောင်ရှားရမည်နည်း

M66 2025-05-28

PHP ၏ GD စာကြည့်တိုက်ကိုပုံရိပ်ထုတ်ယူရန်အတွက် PHPP ၏ GD စာကြည့်တိုက်ကိုအသုံးပြုသောအခါပွင့်လင်းမြင်သာသောအလွှာများသည်ခေါင်းကိုက်ခြင်းဖြစ်သည်။ အထူးသဖြင့်ကျွန်ုပ်တို့သည်အလွှာမျိုးစုံကိုကျော်လွန်ရန် စိတ်ကူး ယဉ်ပုံသဏ္ဌာန် ကဲ့သို့လုပ်ဆောင်ချက်များကိုအသုံးပြုသောအခါပွင့်လင်းမြင်သာသောအပိုင်းကိုအခြားအလွှာများကအလွယ်တကူ overwritt ်ဌာန်းနိုင်သည်။

ဤဆောင်းပါးသည်အလွှာများအကြားအပြန်အလှန် overlay ကြောင့်ဖြစ်ပေါ်လာသောမတူကွဲပြားသောအကျိုးသက်ရောက်မှုများကိုရှောင်ရှားရန်အရောင်အသွေးစုံခြင်းဖြင့် အရောင်အသွေး ခွဲဝေမှုနှင့်အတူအရောင်များကိုပွင့်လင်းမြင်သာမှုရှိစေရန်ပုံစာများကိုအသုံးပြုသည်။

1 ?? ISEACOLORALOCALEALEALEPHA ဆိုတာဘာလဲ။

imagecolorallocatealealpha သည် GD စာကြည့်တိုက်မှ alpha (transparency) သတင်းအချက်အလက်များကိုသတ်မှတ်ရန်သတ်မှတ်ထားသော function တစ်ခုဖြစ်သည်။ ၎င်း၏ function ကိုလက်မှတ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )

အတွက်

  • $ Image : ImageCreatetRuecolor () မှဖန်တီးထားသောပုံရိပ်အရင်းအမြစ်။

  • $ အနီရောင် , $ အစိမ်းရောင် , $ အပြာ - Color Color ၏ RGB အစိတ်အပိုင်းများ (0-255) ။

  • $ alpha : Transparency (0 လုံးဝမဖွင့်နိုင်, 127 လုံးလုံးပွင့်လင်းမြင်သာမှုရှိပါသည်) ။

Transparent အရောင်ကိုနောက်ခံနှင့်အရောင်ဖြည့်ခြင်းအားဖြင့်အလွှာများကိုပေါင်းစည်းသည့်အခါအခြားအလွှာများကလုံးဝ overwrite လုပ်ခြင်းကိုရှောင်ရှားနိုင်သည်။

2 ?? ပုံမှန်ပြ problem နာ - ပွင့်လင်းမြင်သာသောနောက်ခံကိုဖုံးလွှမ်းထားသည်

ငါတို့မှာအလွှာနှစ်ခုရှိတယ်ဆိုပါစို့။

  • အခြေခံပုံ (နောက်ခံပုံ);

  • foreground မြေပုံ (တစ်စိတ်တစ်ပိုင်းပွင့်လင်းမြင်သာသော area ရိယာနှင့်အတူ PNG) ။

အကယ်. foreground image ကို overlay လုပ်ရန် စိတ်ကူးယဉ်ပုံကို တိုက်ရိုက်သုံးပါကပွင့်လင်းမြင်သာသော area ရိယာသည်အနက်ရောင်သို့မဟုတ်အခြေခံပုံရိပ်ကိုနောက်တစ်ခေါက်ပေါ်လာလိမ့်မည်မဟုတ်ပါ။

3 ?? ဖြေရှင်းချက် - Imagecolorallocatealpha နှင့် alpha blending ကိုသုံးပါ

အဓိကအဆင့်များ -
1 ?? alpha blending ကို Enable လုပ်ပါ
ပေါင်းစပ်ခြင်းမပြုမီ, alpha blending ကိုပိတ်ထားပါ။

 imagealphablending($image, false);

2 ?? ပွင့်လင်းအရောင်များ assign <br> <br> နောက်ခံနှင့်လုံးဝပွင့်လင်းမြင်သာသောအရောင်သတ်မှတ်ရန် စိတ်ကူးကြည့်EColorallocealealphaကို သုံးပါ။

 $transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);

3 ?? Alpha Channel <br> ပေါင်းစပ်ပြီးနောက် alpha channel ကိုသိမ်းရန်သတိရပါ။

 imagesavealpha($image, true);

4 ?? နမူနာကုဒ်အပြည့်အစုံ

ပွင့်လင်းမြင်သာသောအလွှာများကိုမည်သို့ရှောင်ရှားရမည်ကိုမည်သို့ရှောင်ရှားရမည်ကိုပြသသည့် PHP SHOP SHOP SHPPL

 <?php
// a 400x400 စစ်မှန်တဲ့အရောင်ပတ်တူ
$canvas = imagecreatetruecolor(400, 400);

// ရုပ်သိမ်းခြင်း alpha blending,ပွင့်လင်းနောက်ခံဖြည့်ရန်
imagealphablending($canvas, false);

// လုံးဝပွင့်လင်းအရောင်သတ်မှတ်ပါ
$transparent = imagecolorallocatealpha($canvas, 0, 0, 0, 127);

// ပွင့်လင်းနောက်ခံအဖြစ်ပတ်တူဖြည့်
imagefill($canvas, 0, 0, $transparent);

// foreground တင်နေသည် PNG ရုပ်ပုံ(ပွင့်လင်း area ရိယာနှင့်အတူ)
$foreground = imagecreatefrompng('https://m66.net/images/foreground.png');

// ပတ်တူပေါ်မှာ foreground overlay
imagecopy($canvas, $foreground, 50, 50, 0, 0, imagesx($foreground), imagesy($foreground));

// သိုထား alpha အချက်အလက်အချက်အလက်
imagesavealpha($canvas, true);

// browser မှ output ကို
header('Content-Type: image/png');
imagepng($canvas);

// အရင်းအမြစ်များကိုဖျက်ဆီးသည်
imagedestroy($canvas);
imagedestroy($foreground);
?>

5 ?? မှတ်စုများ

? ဖိုင်အမျိုးအစားသည်ပွင့်လင်းမြင်သာမှုကိုထောက်ပံ့ရမည်
JPEG သည်ပွင့်လင်းမြင်သာမှု, PNG နှင့် GIF အထောက်အပံ့ကိုမထောက်ခံပါ။

? alpha blending ကိုမှန်ကန်စွာကိုင်တွယ်ပါ
ပေါင်းစပ်ခြင်းမပြုမီ, ပေါင်းစပ်ခြင်းနှင့်ပေါင်းစပ်ပြီးနောက် alpha ကိုသိမ်းပါ။

? Transparency တန်ဖိုးများကိုစစ်ဆေးပါ
Transparency Transparency isionecolorallocatealpha ၏ transparency အကွာအဝေးသည် 0 (opacity) သည် 0 (အပြည့်အဝပွင့်လင်းမြင်သာမှု) , ၎င်းသည် CSS နှင့်အတူ 0 ဖြစ်သည် 1.0 255 ကွဲပြားခြားနားသောပြောင်းလဲခြင်းကိုဂရုပြုပါ။