PHP တွင် ImagecreatRewhreMgdgd2 () သည် .gd2 format image files များမှပုံရိပ်အရင်းအမြစ်များကိုဖန်တီးရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ သို့သော်ဤလုပ်ဆောင်မှုသည်မကြာခဏဆက်သွယ်မှုများနှင့်ပြ issues နာများကိုမကြာခဏတိုက်ရိုက်ဆက်သွယ်မှုများသို့မဟုတ်ပြ issues နာများကိုပင်သတိပေးသည်သို့မဟုတ်မမှန်ကန်သောပုံစံများ, မမှန်ကန်သည့်ပုံစံများ, Code ၏ကြံ့ခိုင်မှုကိုတိုးတက်စေရန်အတွက် Wrapper function ကိုရေးနိုင်ရန်,
အောက်ပါအခြေအနေများနှင့်ကြုံတွေ့ရသည့်အခါ imagecreathrinkrefromgd2 () အမှားအယွင်းများကိုဖြစ်ပေါ်စေသည်။
ဖိုင်မတည်ရှိပါဘူး
ဖိုင်မဖတ်နိုင်သောဖိုင်မရှိပါ
ဖိုင်သည် Recress.gd2 format မရှိပါ
gd extension ကို enabled သို့မဟုတ်ပျောက်ဆုံးခြင်းမရှိပါ
အကယ်. ဤအလားအလာရှိသောပြ problems နာများကိုကိုင်တွယ်ခြင်းမရှိပါကပရိုဂရမ်သည် Runtime တွင်အမှားတစ်ခုပြုလုပ်နိုင်သည်။ ထို့ကြောင့် Wrapper function တစ်ခုကိုဖန်တီးခြင်းသည်ဤခြွင်းချက်များကိုဖမ်းယူနိုင်ပြီးသူတို့ကိုလျောက်ပတ်စွာကိုင်တွယ်နိုင်သည်။
ဖိုင်တည်ရှိပြီးဖတ်နိုင်သည်ကိုစစ်ဆေးပါ။
စိတ်ကူးယဉ်ပုံလတည့်ချိန် ၌သတိပေးချက်များကိုဖမ်းယူခြင်း။
ပုံရိပ်အရင်းအမြစ်ကိုအောင်မြင်စွာပြန်ပို့ခြင်းရှိမရှိဆုံးဖြတ်ရန်။
optional သစ်ထုတ်လုပ်ခြင်းသို့မဟုတ်အမှားအစီရင်ခံခြင်း။
လိုက်ဖက်တဲ့နှင့်ပြန်လည်သုံးသပ်ခြင်းကိုထိန်းသိမ်းပါ။
<?php
/**
* လုံခြုံစွာဖန်တီးပါ GD2 Image အရင်းအမြစ်အရင်းအမြစ်ထုပ်ပိုး function ကို
*
* @param string $filepath တင်ခံရဖို့ .gd2 ဖိုင်လမ်းကြောင်း
* @param bool $logError အမှားသစ်ထုတ်လုပ်ခြင်းကို enable ဖြစ်စေ
* @return resource|false ပုံရိပ်အရင်းအမြစ်ကိုပြန်ပို့ပါသို့မဟုတ် false
*/
function safe_imagecreatefromgd2(string $filepath, bool $logError = true)
{
// 1. ဖိုင်တည်ရှိရှိမရှိစစ်ဆေးပါ
if (!file_exists($filepath)) {
if ($logError) {
error_log("ဖိုင်မတည်ရှိပါဘူး: $filepath", 0);
}
return false;
}
// 2. ဖိုင်ကိုဖတ်လို့မရဘူးဆိုတာစစ်ဆေးပါ
if (!is_readable($filepath)) {
if ($logError) {
error_log("ဖိုင်မဖတ်နိုင်သောဖိုင်မရှိပါ: $filepath", 0);
}
return false;
}
// 3. ထုတ်ယူရန် output ကိုထိန်းချုပ်မှုကိုသုံးပါ imagecreatefromgd2 အသိပေးချက်
try {
ob_start();
$image = @imagecreatefromgd2($filepath);
ob_end_clean();
if (!$image && $logError) {
error_log("imagecreatefromgd2() အပြောင်းအလဲနဲ့မအောင်မြင်ပါ: $filepath", 0);
}
return $image;
} catch (Exception $e) {
if ($logError) {
error_log("ခြွင်းချက်တစ်ခုဖြစ်ပွားခဲ့သည်: " . $e->getMessage(), 0);
}
return false;
}
}
// ဥပမာအသုံးပြုမှု
$image = safe_imagecreatefromgd2('/var/www/m66.net/uploads/sample.gd2');
if ($image === false) {
echo "ပုံရိပ်ကို တင်. မရပါ,ဖိုင်အမျိုးအစားနှင့်လမ်းကြောင်းမှန်ကိုမှန်ကန်စွာမှန်ကန်မှုရှိမရှိအတည်ပြုပါ。";
} else {
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
}
?>
အထက်ပါ Wrapper function ကိုမှတစ်ဆင့်ကျွန်ုပ်တို့သည် isionecreatgdgd2 () အား 0 င်ရောက်ခြင်းသည်ခြွင်းချက်များနှင့်ရင်ဆိုင်ရသောအခါအလွယ်တကူပရိုဂရမ်ပျက်ကျမှုကိုအလွယ်တကူမဖြစ်ပေါ်စေနိုင်သည့်အတွက်ကျွန်ုပ်တို့သည်အဆင်သင့်ဖြစ်အောင်မြှင့်တင်ပေးသည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အလားတူ encapsultultulation အတွေးအခေါ်များသည် Imagecreatjpeg () , Imagecreatjpg () , အသုံးပြုသူများမှဓာတ်ပုံများတင်ခြင်းသို့မဟုတ်ပြင်ပအရင်းအမြစ်များမှဓာတ်ပုံများထုတ်ယူသည့်အခါအခြားပုံရိပ်လုပ်ဆောင်မှုများနှင့်လည်းသက်ဆိုင်ပါသည်။
ဒီဆောင်းပါးမှာဖွဲ့စည်းတည်ဆောက်ပုံပန်းစုကိုဒီဆောင်းပါးကိုဒီဆောင်းပါးကိုပိုပြီးအလိုအလျောက်သရုပ်ပြပါ။