Ang nabuong imaheng PHP GD Hindi maaaring ipakita ang larawan dahil naglalaman ito ng mga error sa Firefox

Ang nabuong imaheng PHP GD Hindi maaaring ipakita ang larawan dahil naglalaman ito ng mga error sa Firefox [Tagalog]

Kapag bumubuo ng isang imahe na may PHP, halimbawa ang pagdaragdag ng isang watermark sa isang nakaimbak na larawan ng server, gamit ang kodigo sa ibaba, o katulad na may JPEG sa halip ng PNG, ang imahe ay hindi maaaring mabuo sa lahat at magtapon ng isang error, direktang nakikita sa Firefox, ngunit hindi sa Chrome.

Ang ganitong uri ng code, sa kabila ng pagtatrabaho sa ilang mga server, ay maaaring magtrabaho ngayon sa iba, kung minsan para sa mga nakatagong mga dahilan. Sa aking kaso, nagtrabaho ito sa ganap na pagmultahin sa lokal, ngunit ginawa sa ibaba ang error sa internet server, ang imahe ay hindi maipakita dahil naglalaman ito ng mga error.

Ang isyu ay maaaring magmula sa ilang kadahilanan, narito ang ilan sa mga ito:

Ang isang output ay naka-set na dati.

Ang isang tunay na error mula sa henerasyon ng imahe.

Ang maling uri ng imahe ay ginagamit.

Hindi naka-install ang library ng larawan.

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

Ang isang output ay naka-set na dati

Kahit na hindi sinadya, maaaring ito ang kaso halimbawa na ang iba pang mga naunang mga script ay naglalaman ng mga puwang sa dulo - upang maiwasan ang error na ito, siguraduhin, tulad ng PHP na inirekomenda, hindi upang isara ang mga script sa PHP end tag?>

Pagkatapos, bago gamitin ang function ng header, gamitin ang sumusunod na code upang matiyak na ang anumang naunang HANAy ng header ay itinapon

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

At gayundin ang pag-andar na ito upang tiyakin na walang output na nabuo bago ang header at imahe

ob_end_clean();

Nalutas nito ang isyu sa aking kaso, at ang imahe ay muling ipinapakita muli.

Ang isang tunay na error mula sa henerasyon ng imahe

Sa kaso ng isang tunay na error ay itinapon sa panahon ng henerasyon ng imahe, siguraduhin na ang PHP ay naka-set upang ipakita ang lahat ng mga posibleng uri ng mga error, at suriin ang kaukulang mga log, upang masubaybayan ito at malutas ito.

Ang sumusunod na code ay gagawing mag-ulat ng PHP ang lahat ng mga error sa log:

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

Pagkatapos ay maaari mong malaman na ang ilang mga error ay iniulat, kahit na hindi sila lumitaw sa output html, dahil sa configuration ng server.

Ang maling uri ng imahe ay ginagamit

Tiyaking tama ang mga uri ng imahe na iyong ginagamit, halimbawa ang paggamit ng code na ito upang makilala ang pagkakaiba sa pagitan ng png at jpeg.

Tiyakin din na ang header ay tama ayon sa output na ginamit, depende sa function ng henerasyon ng imahe na ginamit

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

Hindi naka-install ang library ng larawan

Upang matiyak na naka-install ang mga library ng imahe. Upang gawin ito, patakbuhin ang function na phpinfo (); sa isang script, at suriin ang output para sa sumusunod na halaga na nauugnay sa PHP GD, ang graphics library na ginagamit ng mga pag-andar tulad ng imagepng ();

Sa kaso ng mga pakete ay nawawala, ang paraan upang malutas ito ay depende sa iyong lokal na configuration, alinman sa pamamagitan ng pagdaragdag ng mga pakete gamit ang PEAR utos, o paggamit ng web host na binuo sa solusyon para sa pag-install ng package.

Ano ang dapat gawin kapag hindi gumagana ang imagejpeg o imagepng

Sa NotePad ++, buksan ang PHP file na tumawag sa function na imagepng, at i-save ito pagkatapos ng pagpunta sa menu Encoding> I-convert sa UTF-8 na walang BOM.

Sa DreamWeaver, pumunta sa Mga Katangian ng Pahina> Pamagat / Pag-encode> alisan ng tsek Isama ang Unicode Signature (BOM).

Kapag ang PHP imagejpeg o imagepng ay hindi gumagana, ito ay malamang na dahil sa ang katunayan na ang PHP file ay naka-encode na may BOM, isang Bill Of Material, at samakatuwid ang dagdag na impormasyon ay ipinadala sa imahe bago ang data ng imahe.

Ang function na PHP imagejpeg at PHP ay ginagamit upang magpadala ng isang picture code nang direkta sa tugon ng server.

PHP - hindi gumagana nang maayos ang imagepng
PHP - function na imagepng
PHP - function na imagejpeg

Mga katulad na artikulo

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

Mag-iwan ng komento

Taasan ang kita ng ad ng 50-250% sa Ezoic. Isang Google Certified Publishing Partner.
Taasan ang kita ng ad ng 50-250% sa Ezoic. Isang Google Certified Publishing Partner.
 
Taasan ang kita ng ad ng 50-250% sa Ezoic. Isang Google Certified Publishing Partner.
Taasan ang kita ng ad ng 50-250% sa Ezoic. Isang Google Certified Publishing Partner.