PHP GD ģenerētais attēls Attēlu nevar parādīt, jo tajā ir kļūdas Firefox

PHP GD ģenerētais attēls Attēlu nevar parādīt, jo tajā ir kļūdas Firefox [Latviešu]

Veidojot attēlu ar PHP, piemēram, pievienojot ūdenszīmi serverim, kuram ir saglabāts attēls, izmantojot zemāk kodu vai līdzīgu ar JPEG, nevis PNG, attēls var netikt ģenerēts un mest kļūdu, kas ir tieši redzama pārlūkprogrammā Firefox, bet ne pārlūkā Chrome.

Šāda veida kods, neskatoties uz dažu serveru darbību, tagad var strādāt ar dažiem citiem, dažreiz neskaidra iemesla dēļ. Manā gadījumā tas darbojās perfekti slikti vietējā mērogā, bet tika ražots zem kļūdas interneta serverī, attēlu nevar parādīt, jo tajā ir kļūdas.

Jautājums var būt vairāku iemeslu dēļ, šeit ir daži no tiem:

Izlaide jau ir iestatīta iepriekš.

Patiesa kļūda, veidojot attēlu.

Tiek izmantots nepareizs attēla veids.

Attēlu bibliotēka nav instalēta.

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

Izlaide jau ir iestatīta iepriekš

Pat ja tas nav apzināti, tas varētu būt gadījumā, piemēram, ka citos iepriekšējos skriptos beigās bija atstarpes - lai izvairītos no šīs kļūdas, pārliecinieties, ka, kā PHP iesaka, neaizveriet skriptus ar PHP end tagu?>

Tad pirms galvenes funkcijas izmantošanas izmantojiet šādu kodu, lai pārliecinātos, ka visi iepriekš iestatītie galvenes tiek izmesti

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

Un arī šī funkcija, lai pārliecinātos, ka pirms galvenes un attēla nav izveidota izeja

ob_end_clean();

Tas atrisināja problēmu manā gadījumā, un attēls tika pareizi parādīts vēlreiz.

Patiesa kļūda, veidojot attēlu

Gadījumā, ja attēlu ģenerēšanas laikā tiek izmestas reāla kļūda, pārliecinieties, vai PHP ir iestatīts, lai parādītu visas iespējamās kļūdas un pārbaudītu atbilstošos žurnālus, lai varētu to izsekot un atrisināt.

Pēc koda PHP ziņos visas kļūdas žurnālā:

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

Pēc tam varat uzzināt, ka tika ziņots par dažām kļūdām, pat ja tās neparādās izvades html dēļ servera konfigurācijas.

Tiek izmantots nepareizs attēla veids

Pārliecinieties, vai izmantotie attēlu tipi ir pareizi, piemēram, izmantojot šo kodu, lai atšķirtu png un jpeg.

Pārliecinieties arī, vai galvene ir pareiza atkarībā no izmantotās izvades, atkarībā no izmantotās attēla ģenerēšanas funkcijas

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

Attēlu bibliotēka nav instalēta

Lai pārliecinātos, vai attēla bibliotēkas ir instalētas. Lai to izdarītu, palaidiet funkciju phpinfo (); skriptā un pārbaudiet rezultātu ar šādu vērtību, kas saistīta ar PHP GD, grafikas bibliotēku, kuru izmanto funkcijas, piemēram, imagepng ();

Gadījumā, ja iepakojumi trūkst, veids, kā to atrisināt, ir atkarīgs no jūsu vietējās konfigurācijas, vai nu pievienojot paketi, izmantojot PEAR komandas, vai arī izmantojot pakešu instalēšanas risinājumā iebūvēto risinājumu.

Ko darīt, ja imagejpeg vai imagepng nedarbojas

PiezīmesPad ++ atveriet PHP failu, kas zvana uz imagepng funkciju, un saglabājiet to pēc tam, kad dodaties uz izvēlni Kodēšana> Konvertēt uz UTF-8 bez BOM.

Programmā DreamWeaver atveriet sadaļu Lapas rekvizīti> Nosaukums / kodējums> Noņemiet atzīmi Iekļaut Unicode parakstu (BOM).

Ja PHP imagejpeg vai imagepng nedarbojas, visticamāk tas ir saistīts ar to, ka PHP fails ir kodēts ar BOM, materiāla materiālu, un tāpēc papildus attēls tiek nosūtīts ar attēlu pirms attēla datiem.

PHP imagejpeg un PHP imagepng funkcijas ir funkcijas, ko izmanto, lai nosūtītu attēla kodu tieši servera atbildē.

PHP - imagepng nedarbojas pareizi
PHP - imagepng funkcija
PHP - imagejpeg funkcija

Līdzīgi raksti

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

Atstājiet savu komentāru

Palieliniet reklāmu ieņēmumus 50-250% apmērā, izmantojot Ezoic. Google sertificēts izdevniecības partneris.
Palieliniet reklāmu ieņēmumus 50-250% apmērā, izmantojot Ezoic. Google sertificēts izdevniecības partneris.
 
Palieliniet reklāmu ieņēmumus 50-250% apmērā, izmantojot Ezoic. Google sertificēts izdevniecības partneris.
Palieliniet reklāmu ieņēmumus 50-250% apmērā, izmantojot Ezoic. Google sertificēts izdevniecības partneris.