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, שטר של חומר, ולכן מידע נוסף נשלח עם התמונה לפני נתוני התמונה.

PHP imageppeg ו PHP פונקציות imagepng הם פונקציה המשמש לשלוח קוד תמונה ישירות בתגובה השרת.

לא עובד כראוי
PHP - פונקציית
PHP - פונקציית

גלריית תמונות

PHP GD שנוצר התמונה לא ניתן להציג את התמונה כי היא מכילה שגיאות ב- Firefox : שגיאה התמונה אינה ניתנת להצגה מכיוון שב - מכיל שגיאות ב- Firefox
PHP GD שנוצר התמונה לא ניתן להציג את התמונה כי היא מכילה שגיאות ב- Firefox : דינאמי שנוצר באמצעות תמונה PHP
PHP GD שנוצר התמונה לא ניתן להציג את התמונה כי היא מכילה שגיאות ב- Firefox : PHP GD פרטי החבילה באמצעות הפונקציה phpinfo ()

מאמרים דומים

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

השאר תגובה