PHP GD -kuvake Kuva ei näy, koska siinä on virheitä Firefoxissa

PHP GD -kuvake Kuva ei näy, koska siinä on virheitä Firefoxissa

Kun tuotat kuvaa PHP: ssä, esimerkiksi lisäämällä vesileima palvelimelle tallennettuun kuvaan käyttämällä alla olevaa koodia tai vastaavaa PNG-tiedoston sijaan JPEG-tiedostoa, kuvaa ei ehkä luota ollenkaan ja heittää virheen, joka näkyy Firefoxissa, mutta ei Chrome.

Tällainen koodi, vaikka jotkut palvelimet toimivatkin, saattavat nyt työskennellä joissakin muissa, joskus epäselvistä syistä. Minun tapauksessani se toimi hyvin hienosti paikallisesti, mutta tuotti virheen alapuolella Internet-palvelimella, kuvaa ei voida näyttää, koska se sisältää virheitä.

Asia voi olla useista syistä, tässä muutamia:

Lähtö on jo asetettu aiemmin.

Todellinen virhe kuvantuotannosta.

Käytetään väärää kuvan tyyppiä.

Kuvakirjastoa ei ole asennettu.

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

Lähtö on jo asetettu aiemmin

Vaikka ei tarkoituksellisesti olisikin mahdollista, että muut aikaisemmat komentotiedostot sisältäisivät lopuksi välilyöntejä - jotta vältytään tästä virheestä, varmista, että PHP suosittelee, ettei sulje skriptejä, joilla on PHP-päätymerkki?>

Sitten, ennen kuin käytät otsikkotoimintoa, käytä seuraavaa koodia varmistaaksesi, että kaikki aiemmin asetetut otsikot hylätään

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

Ja myös tämä toiminto varmistaaksesi, ettei otsaketta ja kuvaa ole tuotettu

ob_end_clean();

Tämä ratkaisi asian minun tapauksessani, ja kuva näytettiin uudelleen oikein.

Todellinen virhe kuvantuotannosta

Jos todellinen virhe on heitetty kuvankäsittelyn aikana, varmista, että PHP on asetettu näyttämään kaikki mahdolliset virheet ja tarkista vastaavat lokit, jotta se voi seurata sitä ja ratkaista sen.

Seuraavalla koodilla PHP raportoi kaikki lokitiedoston virheet:

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

Sitten saat selville, että joitain virheitä ilmoitettiin, vaikka ne eivät näkyisi tulostus html-palvelimessa, koska palvelinasetukset.

Käytetään väärää kuvan tyyppiä

Varmista, että käyttämäsi kuvatyypit ovat oikein, esimerkiksi käyttämällä tätä koodia, jotta voit erottaa png- ja jpeg-tiedostot.

Varmista myös, että otsikko on oikea käytettävän lähdön mukaan riippuen käytetystä kuvankäsittelytoiminnosta

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

Kuvakirjastoa ei ole asennettu

Varmista, että kuvakirjastot on asennettu. Tee näin toiminto phpinfo (); ja tarkista seuraavaan PHP GD: hen liittyvä arvo, grafiikkakirjasto, jota käyttävät funktiot, kuten imagepng ();

Jos paketit puuttuvat, tapa ratkaista se riippuu paikallisesta konfiguraatiosta joko lisäämällä paketti PEAR-komennoilla tai verkko-isännöllä, joka on rakennettu ratkaisuun paketin asennusta varten.

Mitä tehdä, kun imagejpeg tai imagepng ei toimi

Avaa NotePad ++: ssa PHP-tiedosto, joka kutsuu imagepng-toimintoa, ja tallenna se menemällä valikkoon Koodaus> Muunna UTF-8: ksi ilman BOM.

Siirry DreamWeaverissa sivun Ominaisuudet> Otsikko / Koodaus> Poista Unicode Signature (BOM).

Kun PHP imagejpeg tai imagepng ei toimi, se johtuu todennäköisimmin siitä, että PHP-tiedosto on koodattu BOM-aineistolla, Bill of Material -toiminnolla, ja siksi lisätietoa lähetetään kuvan kanssa ennen kuvan tietoja.

PHP imagejpeg- ja PHP imagepng -toiminnot toimivat funktiona, joka lähettää kuvakoodin suoraan palvelimen vastaukseen.

PHP - imagepng ei toimi oikein
PHP - imagepng-toiminto
PHP - imagejpeg - toiminto

Samanlaisia ​​artikkeleita

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

Jätä kommentti