Imagecolorresolve () သည် PHP ကိုအသုံးပြုသောအခါ Icumecolorresolve () သည်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ကိုက်ညီသည့်အရောင်အတိအကျကိုရှာတွေ့ပါကအရောင်အညွှန်းကိန်းကိုပြန်ပို့လိမ့်မည်။ အကယ်. ၎င်းကိုမတွေ့နိုင်ပါကအနီးဆုံးအရောင်၏အညွှန်းကိုပြန်လည်ပေးပို့လိမ့်မည်။ Palette-based ပုံရိပ်တွေကိုဖန်တီးတဲ့အခါဒီဟာကို gif format နဲ့) ဖန်တီးတဲ့အခါအရမ်းအရေးကြီးတယ်။
သို့သော် isionecolorresolve () ၏စွမ်းဆောင်ရည် () ၏စွမ်းဆောင်ရည်သည် အရောင်ပြောင်းသွားသော algorithm ကြောင့်ဖြစ်သည်။ ၎င်းသည်ပုံရိပ်ထုတ်ယူခြင်းအစီအစဉ်များကိုပိုမိုကောင်းမွန်စေရန်အထူးသဖြင့်နားလည်ခြင်းသည်အထူးအရေးကြီးသည်။
ISESECOSORRESOLVELELELELELEL () ဟုခေါ်သောအခါ PHP နောက်ကွယ်ရှိယုတ္တိဗေဒသည်အကြမ်းအားဖြင့်ဖြစ်သည်။
ပုံ palette ရှိအရောင်များအားလုံးမှတဆင့်ကြားဖြတ်။
အရောင်တစ်ခုစီနှင့်ပစ်မှတ်အရောင်အကြား "အကွာအဝေး" ကိုတွက်ချက်ပါ။
အသေးငယ်ဆုံးအကွာအဝေးနှင့်အတူအရောင်ကိုရှာပြီး၎င်း၏အညွှန်းကိုပြန်ပို့ပါ။
အကွာအဝေးတွက်ချက်မှုသည်ယေဘုယျအားဖြင့် Euclidean အကွာအဝေး ပုံသေနည်းအပေါ်အခြေခံသည်။
$distance = sqrt(
pow($r1 - $r2, 2) +
pow($g1 - $g2, 2) +
pow($b1 - $b2, 2)
);
$ R1 / $ g1 / $ b1 သည် Palette အရောင်၏ RGB တန်ဖိုး နှင့် $ R2 / $ g2 / $ b2 သည်သင်ရှာဖွေနေသည့်ပစ်မှတ်အရောင်ဖြစ်သည်။
ဘာကြောင့်လဲဆိုတော့၎င်းသည် palette တစ်ခုလုံးကိုဖြတ်သန်းသွားသော ကြောင့် palette ပိုကြီးလေလေစွမ်းဆောင်ရည်ပိုမိုများပြားလာပြီးမြန်ဆန်လေလေဖြစ်သည်။
အဓိကလှောင်ပြောင်မှုနှစ်ခုရှိသည်။
အပြည့်အဝဖြတ်သန်းခြင်း - ရှာဖွေမှုတိုင်းသည် accessing mineism မပါဘဲ palette အရောင်များအားလုံးကိုစကင်ဖတ်စစ်ဆေးရန်လိုအပ်သည်။
တွက်ချက်မှုပမာဏသည်ကြီးမားသည် ။ အရောင်တိုင်းသည်ဖြည့်စွက်ခြင်း, နုတ်ခြင်း, မြှောက်ခြင်း, မြှောက်ခြင်း,
palette တွင်အရောင် 16 ခုသာသာရှိပါကစွမ်းဆောင်ရည်သက်ရောက်မှုကိုမခံစားနိုင်ပါ။ အရောင် 256 ခုသို့မဟုတ်အရောင် 1000 ကျော်ရှိလျှင်, ISESECOSORRESOLVE () ကိုကွပ်မျက်ခြင်း () သည် သိသိသာသာတိုးလာလိမ့်မည်။
အချို့သောပုံရိပ်များ (စိစစ်ရေးကုဒ်များနှင့်ပြောင်းလဲနေသောသင်္ကေတမျိုးဆက်အဖြစ်) ပုံရိပ်များအမြောက်အမြားထုတ်လုပ်သည့်အချို့သောဝက်ဘ်ဆိုက်များတွင်မလျော်ကန်သောအသုံးပြုမှုသည်စွမ်းဆောင်ရည်ပြောင်ပြောင်တင်းတင်းဖြစ်လာနိုင်သည်။
ဥပမာအားဖြင့်အောက်ပါပုံမှန်ဥပမာ -
$image = imagecreate(200, 200);
for ($i = 0; $i < 1000; $i++) {
$color = imagecolorresolve($image, rand(0,255), rand(0,255), rand(0,255));
imagesetpixel($image, rand(0,199), rand(0,199), $color);
}
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
ဤဥပမာတွင် Rand () မှထုတ်လုပ်သောအရောင် () ကိုရရှိသောအရောင် သည် ISESECOLORSOLVE () နှင့်အတူရှိပြီးသား palette မှတဆင့်ရှာဖွေသည်။ $ ငါ တိုးမြှင့်လို့ဒီပရိုဂရမ်ဟာနှေးကွေးလာပြီးနှေးသွားလိမ့်မယ်။
ကန့်သတ် palette အရွယ်အစား : ဖြစ်နိုင်လျှင်, image palette ကိုတတ်နိုင်သမျှသေးငယ်တဲ့အရာအဖြစ်သိမ်းထားပါ။
ကြိုတင်သတ်မှတ်ထားသည့်အရောင်များကိုကြိုတင်သတ်မှတ်ထားခြင်း - မကြာခဏရှာဖွေမှုများကိုရှောင်ရှားရန်အသုံးများသောအရောင်များကိုကိုယ်တိုင်အသုံးပြုရန်အတွက်အသုံးပြုသောအရောင်များ ကို သုံးပါ။
အစားစစ်မှန်သောအရောင်ပုံများကိုသုံးပါ ။
cache color index : သင်ဟာထပ်ခါတလဲလဲခေါ်ဆိုမှုတွေကိုထပ်ခါတလဲလဲခေါ်ဆိုမှုတွေကိုရှောင်ရှားရန်သင်အရောင်အညွှန်းကိန်းကိုသင်ထိန်းသိမ်းနိုင်သည် ။
ဥပမာအားဖြင့်:
$colorCache = [];
function resolveColorCached($image, $r, $g, $b) {
global $colorCache;
$key = "$r,$g,$b";
if (!isset($colorCache[$key])) {
$colorCache[$key] = imagecolorresolve($image, $r, $g, $b);
}
return $colorCache[$key];
}
ဤနည်းအားဖြင့်တူညီသောအရောင်ကိုပြန်လည်အသုံးပြုသောအခါအမြန်နှုန်းသည်ပိုမိုမြန်ဆန်လိမ့်မည်။
Imagecolorresolve () သည်အလွန်အသုံး 0 င်သောဖြစ်သော်လည်းစွမ်းဆောင်ရည် - အထိခိုက်မခံသောလုပ်ဆောင်မှုဖြစ်သည်။ ၎င်း၏ရှာဖွေရေး algorithm သည် ရိုးရှင်းသော Brute-force linear scan + Euclidean အကွာအဝေးတွက်ချက်မှုတစ်ခုဖြစ်သည်။ ဤအချက်ကိုသင်နားလည်ပြီးသည်နှင့် palette search ရလဒ်များကိုကန့်သတ်ခြင်း,