Imagecolortransparent () PHP image processing လုပ်ဆောင်ချက်များကိုအထူးသဖြင့်ပွင့်လင်းမြင်သာသောရုပ်ပုံများကိုကိုင်တွယ်သောအခါ, ၎င်းသည်သတ်မှတ်ထားသောအရောင်ကိုပွင့်လင်းမြင်သာမှုရှိစေရန်ခွင့်ပြုရန်ခွင့်ပြုသည်။ သို့သော်အမှန်တကယ်အသုံးပြုမှုတွင် developer များစွာသည်အထူးသဖြင့်ပုံ၏အရောင်နှင့်ပွင့်လင်းမြင်သာမှုကိုကိုင်တွယ်သောအခါအရောင်ညွှန်းကိန်းနှင့်ဆက်စပ်သောပြ problems နာများကြုံတွေ့ရလိမ့်မည်။ ဤဆောင်းပါးသည်အရောင်ညွှန်း ကိန်း ဆိုင်ရာပြ issues နာများကိုမည်သို့ကိုင်တွယ်ရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
ပထမ ဦး စွာအနေဖြင့်၎င်းသည် စိတ်ကူးယဉ်ပုံသဏ္ဌာန် () function ၏အခြေခံအခန်းကဏ် ence ကိုနားလည်ရန်အရေးကြီးသည်။ ဒီ function ကိုပုံရိပ်အတွက်ပွင့်လင်းအရောင်အညွှန်းကိန်းကိုသတ်မှတ်ရန်အသုံးပြုသည်။
function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagecolortransparent</span></span><span> ( resource </span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$color</span></span><span> )
</span></span>
$ Image သည် များသောအားဖြင့် imagecreat နာရီ () သို့မဟုတ် imagecreatfressmmng () ဖြင့်ဖန်တီးသောပုံရိပ်အရင်းအမြစ်ဖြစ်သည်။
$ အရောင် သည်ပုံရိပ်ရှိအရောင်၏အညွှန်းကိန်းဖြစ်သည်။ ၎င်းကိုပွင့်လင်းမြင်သာမှုရှိလိမ့်မည်။
Images အထူးသဖြင့် GIF နှင့် PNG ရုပ်ပုံများကိုပြုပြင်သည့်အခါ PHP သည်ပုံရိပ်၏အရောင်ကိုသိုလှောင်ရန် palette ကိုအသုံးပြုသည်။ GIF ရုပ်ပုံများသည်အရောင် 256 ခုအထိထောက်ပံ့ပေးပြီး PNG ရုပ်ပုံများသည် palette ကိုသုံးနိုင်သည်သို့မဟုတ် RGB အရောင်များကိုတိုက်ရိုက်သိုလှောင်ထားနိုင်သည်။ ပုံတစ်ပုံသည် palette ကိုအသုံးပြုသောအခါအရောင်တစ်ခုစီကိုအညွှန်းတစ်ခုသတ်မှတ်ထားသည်။ အဆိုပါ imagecolortransparent () function ကိုဤအညွှန်းကိန်းတန်ဖိုးများကိုအသုံးပြုသည်။
ပုံ၏ palette ကိုမှန်ကန်စွာချိတ်ဆက်ထားခြင်းမရှိပါကပြ The နာသည်မှန်ကန်စွာခွဲခြားထားသည့်အခါသို့မဟုတ်သတ်မှတ်ထားသောပွင့်လင်းမြင်သာသောအရောင်သည် palette တွင်မတည်ရှိပါ။ ဤအချိန်တွင်ထိုအချိန်တွင်၎င်းသည်မလိုအပ်သောနောက်ခံအရောင်တစ်ခုရှိသလိုပွင့်လင်းမြင်သာသောအကျိုးသက်ရောက်မှုကိုမှန်ကန်စွာ အသုံးချ. မရပါ။
အရောင်ဖျော့ဖျော့ပြ problems နာများကိုရှောင်ရှားရန်ပုံရိပ်၏အရောင်အညွှန်းကိန်းမှန်ကန်မှုရှိစေရန်သင်ပထမ ဦး ဆုံးလိုအပ်သည်။ ဤတွင်အချို့သောအသုံးများသော processing အဆင့်များရှိပါသည်။
isionecolorat () function ကိုမှတစ်ဆင့် RGB တန်ဖိုးများအပါအ 0 င်အချို့သောနေရာတွင်အရောင်အချက်အလက်များကိုရနိုင်သည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-variable">$rgb</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorat</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// ပုံ၏ဘယ်ဘက်အပေါ်ထောင့်ရှိ pixel ၏အရောင်ကိုရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$red</span></span><span> = (</span><span><span class="hljs-variable">$rgb</span></span><span> >> </span><span><span class="hljs-number">16</span></span><span>) & </span><span><span class="hljs-number">0xFF</span></span><span>;
</span><span><span class="hljs-variable">$green</span></span><span> = (</span><span><span class="hljs-variable">$rgb</span></span><span> >> </span><span><span class="hljs-number">8</span></span><span>) & </span><span><span class="hljs-number">0xFF</span></span><span>;
</span><span><span class="hljs-variable">$blue</span></span><span> = </span><span><span class="hljs-variable">$rgb</span></span><span> & </span><span><span class="hljs-number">0xFF</span></span><span>;
</span></span>
RGB တန်ဖိုးကိုသင်ရရှိသောအခါအနီးဆုံး palette အရောင်အညွှန်းကိန်းကိုရှာဖွေရန် စိတ်ကူးယဉ် () သို့မဟုတ် imagecolorallate () functions များကိုသုံးနိုင်သည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-variable">$color</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorclosest</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>, </span><span><span class="hljs-variable">$green</span></span><span>, </span><span><span class="hljs-variable">$blue</span></span><span>);
</span></span>
အကယ်. ပုံတွင်ကိုယ်နှိုက်ကသင့်လျော်သောပွင့်လင်းမြင်သာသောအရောင်မရှိပါကသင် palette သို့ပွင့်လင်းမြင်သာသောအရောင်ကိုကိုယ်တိုင်ထည့်ရန်လိုအပ်နိုင်သည်။ ဥပမာ - ပွင့်လင်းမြင်သာမှုနှင့်အရောင်ဖန်တီးရန် imagecolorallochoce () function ကိုသုံးနိုင်သည်။
<span><span><span class="hljs-variable">$transparentColor</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocatealpha</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">127</span></span><span>); </span><span><span class="hljs-comment">// Translucent အဖြူရောင်</span></span><span>
</span></span>
ထိုအခါသင်သည်ထိုအရောင်ကိုပွင့်လင်းမြင်သာသောအရောင်အဖြစ်သုံးနိုင်သည်။
<span><span><span class="hljs-title function_ invoke__">imagecolortransparent</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$transparentColor</span></span><span>);
</span></span>
သင် စိတ်ကူးယဉ်ထားသော အရောင်အညွှန်းကိန်းတစ်ခုအတွက်မှန်ကန်သောအရောင်ညွှန်းကိန်းတစ်ခုပေးရန်သေချာစေပါ။ အကယ်. ပုံသည် palette ကိုအသုံးပြုနေပါကပွင့်လင်းမြင်သာသောအရောင်၏အရောင်အညွှန်းကိန်းသည်ပုံ၏ palette တွင်ဖြစ်သင့်သည်။ အကယ်. ပုံတွင်ပွင့်လင်းမြင်သာသောလမ်းကြောင်းများပါ 0 င်ပါကပွင့်လင်းမြင်သာသောလမ်းကြောင်းများပါ 0 င်ပါကပွင့်လင်းမြင်သာသောလမ်းကြောင်းများကိုအခြားအရောင်များဖြင့်မဖုံးကွယ်နိုင်ကြောင်းသေချာစေသင့်သည်။
ဖြစ်နိုင်လျှင် Transparency ကိုထောက်ပံ့သော image formats (ဥပမာ PNG ကဲ့သို့) ကိုသုံးပါ။ GIF ပုံရိပ်များကိုပွင့်လင်းမြင်သာသောပံ့ပိုးမှုသည်အတော်အတန်အကန့်အသတ်ရှိသည်။ အကယ်. သင်သည် GIF Image ကိုအသုံးပြုရပါက၎င်း၏ palette ကိုအထူးသဖြင့်ပွင့်လင်းမြင်သာသောအရောင်အညွှန်းများနှင့်မှန်ကန်စွာ configure လုပ်ပါ။
ဤနေရာတွင်ပုံရိပ်တစ်ခုအတွက်ပွင့်လင်းမြင်သာသောအရောင်များကိုမည်သို့သတ်မှတ်ရမည်ကိုပြသသည့်အပြည့်အဝနမူနာကုဒ်ဖြစ်သည်။
<span><span><span class="hljs-comment">// ပုံကိုတင်ခြင်း</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-string">'example.png'</span></span><span>);
</span><span><span class="hljs-comment">// ပုံ၏အရောင်အညွှန်းကိုရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$rgb</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorat</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-variable">$red</span></span><span> = (</span><span><span class="hljs-variable">$rgb</span></span><span> >> </span><span><span class="hljs-number">16</span></span><span>) & </span><span><span class="hljs-number">0xFF</span></span><span>;
</span><span><span class="hljs-variable">$green</span></span><span> = (</span><span><span class="hljs-variable">$rgb</span></span><span> >> </span><span><span class="hljs-number">8</span></span><span>) & </span><span><span class="hljs-number">0xFF</span></span><span>;
</span><span><span class="hljs-variable">$blue</span></span><span> = </span><span><span class="hljs-variable">$rgb</span></span><span> & </span><span><span class="hljs-number">0xFF</span></span><span>;
</span><span><span class="hljs-comment">// အနီးဆုံးအရောင်အညွှန်းကိုရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$transparentColor</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorclosest</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>, </span><span><span class="hljs-variable">$green</span></span><span>, </span><span><span class="hljs-variable">$blue</span></span><span>);
</span><span><span class="hljs-comment">// ပွင့်လင်းအရောင် set</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagecolortransparent</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$transparentColor</span></span><span>);
</span><span><span class="hljs-comment">// output ကိုပုံ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/png'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-comment">// မှတ်ဥာဏ်အခမဲ့မှတ်ဥာဏ်</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span></span>
isaultecolortransparent () function ကိုအသုံးပြုသောအခါအရောင်အညွှန်းကိန်း၏မှန်ကန်မှုကိုသေချာစေရန်ပြ the နာကိုဖြေရှင်းရန်သော့ချက်ဖြစ်သည်။ အရောင်များအညွှန်းများကိုစနစ်တကျ 0 င်ရောက်ခြင်း, isagecolorclowest () function ကို အသုံးပြု. ပွင့်လင်းမြင်သာသောအရောင်များကိုမှန်ကန်သော configuration ကိုသေချာစွာရယူခြင်းဖြင့်ပုံရိပ်၏ပွင့်လင်းမြင်သာမှုကိုပိုမိုကောင်းမွန်စွာထိန်းချုပ်နိုင်သည်။ ထို့အပြင်သင့်လျော်သောပုံရိပ်ပုံစံ (ဥပမာ - PNG ကဲ့သို့သော partette configuration ကိုရွေးချယ်ခြင်းသည်ပွင့်လင်းမြင်သာမှုအပြောင်းအလဲအတွက်ထိရောက်မှုနှင့်တိကျမှန်ကန်မှုကိုတိုးတက်စေရန်ကူညီလိမ့်မည်။