Δημιουργία εικόνας 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, να μην κλείσετε δέσμες ενεργειών με ετικέτα end 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 είτε χρησιμοποιώντας την ενσωματωμένη λύση web hosting για την εγκατάσταση του πακέτου.

Τι να κάνετε όταν το imagejpeg ή το imagepng δεν λειτουργεί

Στο NotePad ++, ανοίξτε το αρχείο PHP που καλεί τη λειτουργία imagepng και αποθηκεύστε το μετά από το μενού Encoding> Convert to UTF-8 χωρίς BOM.

Στο DreamWeaver, μεταβείτε στην επιλογή Ιδιότητες σελίδας> Τίτλος / Κωδικοποίηση> καταργήστε την επιλογή Ενσωματώστε την υπογραφή Unicode (BOM).

Όταν το PHP imagejpeg ή το imagepng δεν δουλεύει, πιθανότατα οφείλεται στο γεγονός ότι το αρχείο PHP έχει κωδικοποιηθεί με ένα BOM, Bill of Material και επομένως αποστέλλονται επιπλέον πληροφορίες με την εικόνα πριν από τα δεδομένα εικόνας.

Οι λειτουργίες PHP imagejpeg και PHP imagepng είναι λειτουργίες που χρησιμοποιούνται για την αποστολή ενός κώδικα εικόνας απευθείας στην απάντηση του διακομιστή.

PHP - imagepng δεν λειτουργεί σωστά
PHP - λειτουργία εικόνας
PHP - λειτουργία imagejpeg

Διαβάστε περισσότερα

φωτογραφίες

Δημιουργία εικόνας 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
بالضبط ما كنت أبحث عنه ، مثالي

Αφήστε ένα σχόλιο