PHP GD oluşturulan görüntü Firefox'taki hatalar içerdiğinden görüntü gösterilemiyor

PHP GD oluşturulan görüntü Firefox'taki hatalar içerdiğinden görüntü gösterilemiyor

PHP ile bir görüntü oluştururken, örneğin bir sunucuda saklanan resmi filigran ekleyerek, aşağıdaki kodu kullanarak veya PNG yerine JPEG ile benzer şekilde, görüntü oluşturulamayabilir ve Firefox’ta doğrudan görünebilen bir hata atılabilir, ancak Chrome'da.

Bu tür bir kod, bazı sunucular üzerinde çalışılmasına rağmen, bazen bazı nedenlerle, bazen de belirsiz nedenlerle çalışabilir. Benim durumumda, yerel olarak gayet iyi çalıştı, ancak internet sunucusunda aşağıdaki hata oluştu, hata içerdiği için görüntü gösterilemiyor.

Sorun birkaç nedenden kaynaklanıyor olabilir, bunlardan bazıları:

Daha önce bir çıkış önceden ayarlanmış.

Görüntü oluşturmadan gerçek bir hata.

Yanlış görüntü tipi kullanılır.

Resim kütüphanesi yüklü değil.

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

Daha önce bir çıkış önceden ayarlanmış

Kasıtlı olarak olmasa bile, diğer önceki betiklerin sonunda boşluklar içerdiği durumlar olabilir - bu hatayı önlemek için PHP'nin önerdiği gibi PHP son etiketiyle komut dosyalarını kapatmamaya dikkat edin?

Daha sonra, başlık işlevini kullanmadan önce, önceden ayarlanmış herhangi bir başlığın atıldığından emin olmak için aşağıdaki kodu kullanın.

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

Ve ayrıca bu işlev, başlık ve görüntüden önce herhangi bir çıktı oluşturulmadığından emin olmak için

ob_end_clean();

Bu benim durumumda sorunu çözdü ve görüntü tekrar doğru görüntülendi.

Görüntü oluşturmadan gerçek bir hata

Görüntü oluşturma sırasında gerçek bir hata oluşması durumunda, PHP'nin olası tüm hata türlerini gösterecek şekilde ayarlandığından emin olun ve bunları takip edip çözebilmek için ilgili günlükleri kontrol edin.

Aşağıdaki kod, PHP'nin günlüğündeki tüm hataları bildirmesini sağlar:

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

Sunucu yapılandırmasından dolayı çıktı html'de görünmese bile bazı hataların bildirildiğini öğrenebilirsiniz.

Yanlış görüntü tipi kullanılıyor

Kullandığınız görüntü türlerinin doğru olduğundan emin olun, örneğin png ve jpeg arasında ayrım yapmak için bu kodu kullanın.

Ayrıca kullanılan görüntü oluşturma işlevine bağlı olarak, başlığın kullanılan çıktıya göre doğru olduğundan emin olun.

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

Resim kitaplığı yüklü değil

Görüntü kitaplıklarının kurulu olduğundan emin olmak için. Bunu yapmak için phpinfo () işlevini çalıştırın; bir komut dosyasında ve PHP GD ile ilgili aşağıdaki değer için çıktıyı kontrol edin, imagepng () gibi işlevler tarafından kullanılan grafik kitaplığı;

Paketlerin eksik olması durumunda, çözüm yolu, PEAR komutlarını kullanarak paketi ekleyerek veya paket kurulumu için çözümde bulunan web ana bilgisayarını kullanarak yerel yapılandırmanıza bağlıdır.

İmagejpeg veya imagepng çalışmadığında ne yapmalı

NotePad ++ uygulamasında, imagepng işlevini çağıran PHP dosyasını açın ve BOM'siz Kodlama> UTF-8'e Dönüştürme menüsüne gittikten sonra kaydedin.

DreamWeaver'da, Sayfa Özellikleri> Başlık / Kodlama> Unicode İmzasını Dahil Et (BOM) seçeneğinin işaretini kaldırın.

PHP imagejpeg veya imagepng çalışmıyorsa, büyük olasılıkla PHP dosyasının bir malzeme listesi, bir Malzeme Listesi ile kodlanmış olması ve bu nedenle, resim verilerinden önce resim ile birlikte ekstra bilgiler gönderilmesi olabilir.

PHP imagejpeg ve PHP imagepng işlevleri, doğrudan sunucu yanıtında bir resim kodu göndermek için kullanılan işlevdir.

PHP - imagepng düzgün çalışmıyor
PHP - imagepng işlevi
PHP - imagejpeg işlevi

Benzer makaleler

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

yorum Yap