PHP GD ولدت صورة لا يمكن عرض الصورة لأنها تحتوي على أخطاء في Firefox

PHP GD ولدت صورة لا يمكن عرض الصورة لأنها تحتوي على أخطاء في Firefox [عربى]

عند إنشاء صورة باستخدام PHP ، على سبيل المثال إضافة علامة مائية إلى صورة مخزنة للخادم ، باستخدام شفرة أدناه ، أو رمز مشابه باستخدام JPEG بدلاً من PNG ، قد لا يتم إنشاء الصورة على الإطلاق وإلقاء خطأ ، مرئيًا مباشرة على Firefox ، ولكن ليس على Chrome.

قد يعمل هذا النوع من التعليمات البرمجية ، على الرغم من العمل على بعض الخوادم ، على بعض الأشياء الأخرى ، أحيانًا لأسباب غامضة. في حالتي ، عملت بشكل جيد تماما محليا ، ولكن تنتج تحت الخطأ على خادم الإنترنت ، لا يمكن عرض الصورة لأنها تحتوي على أخطاء.

يمكن أن تأتي المشكلة من عدة أسباب ، في ما يلي بعض منها:

تم بالفعل تعيين الإخراج مسبقًا.

خطأ حقيقي من توليد الصور.

يتم استخدام نوع الصورة الخطأ.

مكتبة الصور غير مثبتة.

$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');

تم بالفعل تعيين الإخراج مسبقًا

حتى لو لم يكن عن قصد ، قد يكون الأمر على سبيل المثال أن النصوص السابقة الأخرى كانت تحتوي على مسافات في النهاية - لتجنب هذا الخطأ ، تأكد ، كما توصي PHP ، بعدم إغلاق البرامج النصية باستخدام علامة نهاية PHP؟

ثم ، قبل استخدام وظيفة الرأس ، استخدم التعليمة البرمجية التالية للتأكد من تجاهل أي مجموعة تم تعيينها مسبقًا

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

وكذلك هذه الوظيفة للتأكد من عدم إنشاء أي مخرجات قبل الرأس والصورة

ob_end_clean();

هذا حل المشكلة في حالتي ، وتم عرض الصورة بشكل صحيح مرة أخرى.

خطأ حقيقي من توليد الصور

في حالة حدوث خطأ حقيقي أثناء إنشاء الصورة ، تأكد من تعيين PHP لعرض كل أنواع الأخطاء الممكنة ، والتحقق من السجلات المناظرة ، حتى تتمكن من تعقبها وحلها.

سيعمل التعليمة البرمجية التالية على جعل تقارير PHP جميع الأخطاء في السجل:

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

قد تكتشف بعد ذلك أنه تم الإبلاغ عن بعض الأخطاء ، حتى إذا لم تظهر في مخرجات html ، بسبب تكوين الخادم.

يتم استخدام نوع الصورة الخطأ

تأكد من صحة أنواع الصور التي تستخدمها ، على سبيل المثال باستخدام هذا الرمز للتمييز بين png و jpeg.

تأكد أيضًا من صحة رأس الصفحة وفقًا للإخراج المستخدم ، اعتمادًا على وظيفة إنشاء الصورة المستخدمة

//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');

مكتبة الصور غير مثبتة

للتأكد من تثبيت مكتبات الصور. للقيام بذلك ، قم بتشغيل الدالة phpinfo ()؛ في برنامج نصي ، والتحقق من الإخراج للقيمة التالية المتعلقة بـ PHP GD ، مكتبة الرسومات المستخدمة بواسطة وظائف مثل imagepng ()؛

في حالة فقدان الحزم ، تعتمد طريقة حلها على التكوين المحلي ، إما عن طريق إضافة الحزمة باستخدام أوامر PEAR ، أو باستخدام مضيف الويب المدمج في حل لتثبيت الحزم.

ما يجب القيام به عندما لا يعمل imagejpeg أو imagepng

في NotePad ++ ، افتح ملف PHP الذي يستدعي وظيفة imagepng ، واحفظه بعد الانتقال إلى قائمة التشفير> تحويل إلى UTF-8 بدون BOM.

في DreamWeaver ، انتقل إلى خصائص الصفحة> العنوان / الترميز> قم بإلغاء تحديد تضمين توقيع Unicode (BOM).

عندما لا يعمل PHP imagejpeg أو imagepng ، فمن المحتمل أن يكون ملف PHP قد تم ترميزه باستخدام BOM و Bill Of Material ، وبالتالي يتم إرسال معلومات إضافية مع الصورة قبل بيانات الصورة.

وظائف PHP imagejpeg و PHP imagepng هي وظيفة تستخدم لإرسال رمز صورة مباشرة في استجابة الخادم.

PHP - imagepng لا يعمل بشكل صحيح
PHP - وظيفة imagepng
PHP - وظيفة imagejpeg

قراءة المزيد

مقالات مماثلة

تعليقات (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
بالضبط ما كنت أبحث عنه ، مثالي

اترك تعليقا

زيادة أرباح الإعلانات بنسبة 50-250٪ باستخدام Ezoic. شريك Google معتمد للناشرين.
زيادة أرباح الإعلانات بنسبة 50-250٪ باستخدام Ezoic. شريك Google معتمد للناشرين.
 
زيادة أرباح الإعلانات بنسبة 50-250٪ باستخدام Ezoic. شريك Google معتمد للناشرين.
زيادة أرباح الإعلانات بنسبة 50-250٪ باستخدام Ezoic. شريك Google معتمد للناشرين.