GD PHP menghasilkan gambar Gambar tidak dapat ditampilkan karena mengandung kesalahan di Firefox

GD PHP menghasilkan gambar Gambar tidak dapat ditampilkan karena mengandung kesalahan di Firefox

Saat membuat gambar dengan PHP, misalnya menambahkan tanda air ke gambar yang disimpan server, menggunakan kode di bawah ini, atau yang serupa dengan JPEG, bukan PNG, gambar mungkin tidak dihasilkan sama sekali dan melemparkan kesalahan, langsung terlihat di Firefox, tetapi tidak di Chrome.

Kode semacam ini, meskipun bekerja pada beberapa server, mungkin sekarang bekerja pada beberapa lainnya, kadang-kadang karena alasan yang tidak jelas. Dalam kasus saya, itu bekerja baik-baik saja secara lokal, tetapi menghasilkan kesalahan di bawah pada server internet, gambar tidak dapat ditampilkan karena mengandung kesalahan.

Masalahnya bisa berasal dari beberapa alasan, berikut ini beberapa di antaranya:

Output telah ditetapkan sebelumnya.

Kesalahan asli dari pembuatan gambar.

Jenis gambar yang salah digunakan.

Pustaka gambar tidak diinstal.

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

Output telah ditetapkan sebelumnya

Bahkan jika tidak disengaja, mungkin kasusnya misalnya bahwa skrip sebelumnya lainnya mengandung spasi di bagian akhir - untuk menghindari kesalahan ini, pastikan, seperti yang disarankan oleh PHP, bukan untuk menutup skrip dengan tag akhir PHP?>

Kemudian, sebelum menggunakan fungsi header, gunakan kode berikut untuk memastikan header yang sebelumnya disetel dibuang

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

Dan juga fungsi ini untuk memastikan tidak ada output yang dihasilkan sebelum header dan gambar

ob_end_clean();

Ini memecahkan masalah dalam kasus saya, dan gambar ditampilkan dengan benar lagi.

Kesalahan asli dari pembuatan gambar

Dalam kasus kesalahan nyata dilemparkan selama pembuatan gambar, pastikan PHP diatur untuk menampilkan semua kemungkinan jenis kesalahan, dan periksa log yang sesuai, untuk dapat melacak dan menyelesaikannya.

Kode berikut akan membuat laporan PHP semua kesalahan dalam log:

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

Anda mungkin kemudian menemukan bahwa beberapa kesalahan dilaporkan, bahkan jika mereka tidak muncul dalam output html, karena konfigurasi server.

Jenis gambar yang salah digunakan

Pastikan jenis gambar yang Anda gunakan benar, misalnya menggunakan kode ini untuk membedakan antara png dan jpeg.

Juga pastikan header benar sesuai dengan output yang digunakan, tergantung pada fungsi pembangkitan gambar yang digunakan

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

Pustaka gambar tidak diinstal

Untuk memastikan pustaka gambar diinstal. Untuk melakukannya, jalankan fungsi phpinfo (); dalam skrip, dan periksa output untuk nilai berikut yang terkait dengan PHP GD, pustaka grafis yang digunakan oleh fungsi seperti imagepng ();

Jika paket hilang, cara untuk mengatasinya tergantung pada konfigurasi lokal Anda, baik dengan menambahkan paket menggunakan perintah PEAR, atau menggunakan host web yang dibangun di dalam solusi untuk instalasi paket.

Apa yang harus dilakukan ketika imagejpeg atau imagepng tidak berfungsi

Di NotePad ++, buka file PHP yang memanggil fungsi imagepng, dan simpan setelah masuk ke menu Pengkodean> Konversi ke UTF-8 tanpa BOM.

Di DreamWeaver, pergi ke Properti Halaman> Judul / Pengkodean> hapus centang Sertakan Unicode Signature (BOM).

Ketika PHP imagejpeg atau imagepng tidak berfungsi, kemungkinan besar karena fakta bahwa file PHP telah dikodekan dengan BOM, Bill Of Material, dan karena itu informasi tambahan dikirim dengan gambar sebelum data gambar.

Fungsi PHP imagejpeg dan PHP imagepng adalah fungsi yang digunakan untuk mengirim kode gambar langsung dalam respons server.

PHP - imagepng tidak berfungsi dengan benar
PHP - fungsi imagepng
PHP - fungsi imagejpeg

Artikel serupa

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

Tinggalkan komentar