Obraz generowany przez GD w PHP Obraz nie może być wyświetlany, ponieważ zawiera błędy w Firefoksie



Podczas generowania obrazu za pomocą PHP, na przykład dodawania znaku wodnego do obrazu przechowywanego na serwerze, przy użyciu poniższego kodu lub podobnego z obrazem JPEG zamiast PNG, obraz może nie być generowany i zgłaszać błąd, widoczny bezpośrednio w przeglądarce Firefox, ale nie w Chrome.

Ten rodzaj kodu, pomimo pracy na niektórych serwerach, może teraz działać na innych, czasem z niejasnych powodów. W moim przypadku działało idealnie dobrze lokalnie, ale wyprodukowane poniżej błędu na serwerze internetowym, obraz nie może być wyświetlany, ponieważ zawiera błędy.

Problem może wynikać z kilku powodów: oto niektóre z nich:

Dane wyjściowe zostały już wcześniej ustawione.

Prawdziwy błąd generowania obrazu.

Używany jest niewłaściwy typ obrazu.

Biblioteka obrazów nie jest zainstalowana.

Dane wyjściowe zostały już wcześniej ustawione

Nawet jeśli nie celowo, może być na przykład na przykład, że inne poprzednie skrypty zawierały spacje na końcu - aby uniknąć tego błędu, upewnij się, że, jak zaleca PHP, nie zamykaj skryptów z tagiem końcowym PHP?>

Następnie, przed użyciem funkcji nagłówka, użyj następującego kodu, aby upewnić się, że poprzednio ustawiony nagłówek został odrzucony

A także ta funkcja, aby upewnić się, że nie zostały wygenerowane żadne dane wyjściowe przed nagłówkiem i obrazem

Rozwiązało to problem w moim przypadku, a obraz został poprawnie wyświetlony ponownie.

Prawdziwy błąd generowania obrazu

W przypadku wygenerowania prawdziwego błędu podczas generowania obrazu, upewnij się, że PHP jest ustawione na wyświetlanie wszystkich możliwych rodzajów błędów i sprawdź odpowiednie dzienniki, aby móc je wyśledzić i rozwiązać.

Poniższy kod sprawi, że PHP zgłosi wszystkie błędy w dzienniku:

Możesz wtedy dowiedzieć się, że zgłoszono pewne błędy, nawet jeśli nie pojawiły się w wyjściowym html, z powodu konfiguracji serwera.

Używany jest niewłaściwy typ obrazu

Upewnij się, że używane typy obrazów są poprawne, na przykład używając tego kodu, aby odróżnić png i jpeg.

Upewnij się także, że nagłówek jest poprawny w zależności od użytego wyjścia, w zależności od użytej funkcji generowania obrazu

Biblioteka obrazów nie jest zainstalowana

Aby upewnić się, że biblioteki obrazów są zainstalowane. Aby to zrobić, uruchom funkcję phpinfo (); w skrypcie i sprawdź dane wyjściowe dla następującej wartości związanej z PHP GD, biblioteki graficznej używanej przez funkcje takie jak imagepng ();

W przypadku braku pakietów, sposób rozwiązania zależy od konfiguracji lokalnej, poprzez dodanie pakietu za pomocą poleceń PEAR lub za pomocą wbudowanego rozwiązania hosta internetowego do instalacji pakietu.

Co robić, gdy imagejpeg lub imagepng nie działa

W NotePad ++ otwórz plik PHP wywołujący funkcję imagepng i zapisz go po przejściu do menu Kodowanie> Konwertuj na UTF-8 bez BOM.

W DreamWeaver przejdź do Właściwości strony> Tytuł / Kodowanie> usuń zaznaczenie opcji Dołącz sygnaturę Unicode (BOM).

Gdy PHP imagejpeg lub imagepng nie działa, najprawdopodobniej jest to spowodowane faktem, że plik PHP został zakodowany za pomocą BOM, Bill of Material, a zatem dodatkowe informacje są wysyłane z obrazem przed danymi obrazu.

Funkcje PHP imagejpeg i PHP imagepng służą do wysyłania kodu obrazu bezpośrednio w odpowiedzi serwera.

PHP - imagepng nie działa poprawnie
PHP - funkcja imagepng
PHP - funkcja imagejpeg

YB Digital
O autorze - YB Digital
Yoann jest międzynarodowym konsultantem biznesowym, moderatorem i koordynatorem. Pracował ponad 10 lat w globalnym biznesie, łańcuchu dostaw, finansach, projektach SAP ERP, optymalizacji sieci i SEO dla różnych branż, takich jak logistyka, kosmetyki, towary konsumpcyjne, pielęgnacja urody lub moda, w ponad 30 krajach na całym świecie. .
 




Komentarze (6)

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

zostaw komentarz