PHP GD generated image Firefox-da xatolar mavjudligi sababli tasvirni ko'rsatish mumkin emas

PHP GD generated image Firefox-da xatolar mavjudligi sababli tasvirni ko'rsatish mumkin emas

PHP bilan tasvirni yaratishda, masalan, serverda saqlangan rasmga moybo'yoqli faylni qo'shib qo'yish, quyida kodni ishlatish yoki PNG formatidagi JPEG bilan o'xshash tasvirni yaratish, tasvir butunlay ishlab qilinmasligi va to'g'ridan-to'g'ri Firefox-da paydo bo'lishi mumkin bo'lgan xatoga yo'l qo'ymasligi mumkin. Chrome brauzerida.

Ba'zi serverlarda ishlashga qaramasdan, bu kabi kod endi ba'zida ishlaydi, ba'zan esa noaniq sabablarga ko'ra. Menimcha, u mahalliy darajada yaxshi ishladi, lekin Internet-serverda xatoliklar quyida keltirildi, chunki rasmda xatolik mavjud.

Muammo bir necha sabablarga ko'ra kelib chiqishi mumkin, ulardan ba'zilari:

Oldindan oldindan o'rnatilgan bir chiqish.

Rasmni yaratishda haqiqiy xato.

Noto'g'ri rasm turi ishlatiladi.

Rasm kutubHANAasi o'rnatilmagan.

$stamp = imagecreatefrompng('watermark.png');
if(!$im = imagecreatefrompng('image.png')) die('Error generating image');
$marge_right = $marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

$copyimage = imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
if(!imagedestroy($im)) die('Error generating image');
if(!imagedestroy($stamp)) die('Error generating image');

Oldindan oldindan o'rnatilgan bir chiqish

Hatto qasddan bo'lmasa ham, masalan, boshqa oldingi skriptlar oxirida bo'sh joylarni o'z ichiga olishi mumkin - bu xatolardan qochish uchun, PHP tomonidan tavsiya etilganidek, PHP yakuni yorlig'i bilan skriptni yopmaslik kerakmi?

So'ngra, nom vazifasini ishlatishdan oldin, oldindan o'rnatilgan bosh sarlavhasi tashlab qo'yilganligiga ishonch hosil qilish uchun quyidagi kodni ishlating

foreach (getallheaders() as $name => $value) {
header_remove($name);
}

Bundan tashqari, ushbu vazifani nom va tasvirdan oldin hech qanday chiqim hosil qilinmaganligiga ishonch hosil qilish

ob_end_clean();

Bu mening ishimda muammoni hal qildi va tasvir yana to'g'ri ko'rsatildi.

Rasmni yaratishda haqiqiy xato

Tasvir yaratish jarayonida haqiqiy xatolik yuzaga kelsa, PHP barcha mumkin bo'lgan xatoliklarni ko'rsatishi va uni tekshirib ko'rish va hal qilish uchun tegishli jurnallarni tekshiring.

Quyidagi kod PHP tomonidan jurnaldagi barcha xatolarni bildiradi:

error_reporting(E_ALL);
ini_set('display_errors', '1');

Keyinchalik, serverdagi konfiguratsiya sababli chiqish htmlida ko'rinmasa ham, ayrim xatolar bildirilganligini bilib olishingiz mumkin.

Noto'g'ri rasm turi ishlatiladi

Siz foydalanadigan rasm turlarining to'g'ri ekanligini tekshiring, masalan, png va jpeg o'rtasidagi farqlarni ajratish uchun ushbu kodni qo'llang.

Bundan tashqari, ishlatiladigan tasvirni generatsiya qilish funktsiyasiga qarab, sarlavha ishlatilgan chiqim bo'yicha to'g'ri ekanligiga ishonch hosil qiling

//to generate png image
header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
//to generate jpeg image
header('Content-type: image/jpeg');
if(!imagejpeg($im)) die('Error generating image');

Rasm kutubHANAasi o'rnatilmagan

Rasm kutubHANAalari o'rnatilganligiga ishonch hosil qilish uchun. Buning uchun phpinfo () funktsiyasini bajaring; skriptda va PHP GD bilan bog'liq quyidagi qiymat uchun chiqishni tekshiring, imagepng () kabi funktsiyalar tomonidan ishlatiladigan grafik kutubHANAasi;

Agar paketlar mavjud bo'lmasa, uni hal qilish usuli mahalliy konfiguratsiyaga bog'liq, yoki paketni PEAR buyruqlar yordamida qo'shib yoki paketni o'rnatishda ishlatiladigan veb-hostni ishlatadi.

Imagejpeg yoki imagepng ishlamayotgan paytda nima qilish kerak

NotePad ++ da, imagepng funksiyasini chaqiradigan PHP faylini oching va kodlash> UTF-8-ga BOM-ga o'tkazmasdan Menyu-ga o'tishdan keyin saqlang.

DreamWeaver'da, Sahifa xususiyatlari> Sarlavha / Kodlash bo'limiga o'ting> Unicode Signature (BOM) ni qo'shish belgisini olib tashlang.

PHP imagejpeg yoki imagepng ishlamayotgan bo'lsa, ehtimol PHP faylining BOM bilan kodlanganligi va shuning uchun rasm ma'lumotidan oldin tasvir bilan qo'shimcha ma'lumot yuborilganligi sababli.

PHP imagejpeg va PHP imagepng vazifalari rasm kodini bevosita server javobida yuborish uchun ishlatiladi.

PHP - imagepng to'g'ri ishlamayapti
PHP - imagepng funksiyasi
PHP - imagejpeg funksiyasi

Shu kabi maqolalar

Izohlar (6)

Irvin Vasquez, 2018-08-19
Simple, clear and well explained, many thanks
Joyce Lawrence, 2018-08-19
ありがとう、非常に有益な
Catherine Roberts, 2018-08-19
Dokładnie tego, czego szukałem, idealnie
Headlinext, 2018-08-19
जानकारी का महान टुकड़ा, साझा करने के लिए धन्यवाद
Marshel, 2018-08-19
विश्वास नहीं कर सकता कि मुझे अंत में समाधान मिला, यह लंबे समय तक एक दुःस्वप्न था, अब हल हो गया
porcateraC, 2018-08-19
بالضبط ما كنت أبحث عنه ، مثالي

Fikr qoldiring