2012-05-19 42 views
5

Dize biçiminde bir görüntü var, bazı mime tipi üstbilgilerle bu dizgiyi çıktılamak bir sayfada görüntülemeye yetecek kadar olurdu, bu dizenin görüntü olup olmadığını nasıl kontrol edelim?dize resim olup olmadığını kontrol edin

+0

? Eğer öyleyse sihirli sayı kütüphanelerine bakmalısınız. (Bunlardan en yaygın olanı basitçe "büyü" olarak adlandırılır.) – OmnipotentEntity

cevap

9

"Görüntü kaynağı başarılı olduğunda geri dönecektir. Görüntü türü desteklenmiyorsa, veriler tanınan bir biçimde değilse veya görüntü bozuksa ve yüklenemiyorsa FALSE döner."

Örnek: base64 demek "dizesi biçimi" ile

<?php 
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl' 
     . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr' 
     . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r' 
     . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg=='; 
$data = base64_decode($data); 

$im = imagecreatefromstring($data); 
if ($im !== false) { 
    header('Content-Type: image/png'); 
    imagepng($im); 
    imagedestroy($im); 
} 
else { 
    echo 'An error occurred.'; 
} 
?> 

http://php.net/manual/en/function.imagecreatefromstring.php

+1

'@' kullanarak hataları bastırmanız gerekir veya bunun için 'imagecreatefromstring() 'ifadesini kullanmanız gerekir. – Niranjan

+0

@ngen Herhangi bir yoldan kaçınmak ve aynı zamanda @ kullanmaktan kaçınmanın herhangi bir yolu var mı? –

+0

@YuriKolovsky Yapamazsınız. Bir görüntüyü bekleyen bir işleve bir dize yüklemeye çalıştığınız için. Görüntü verisi bozuksa 1) başarısız olur. 2) görüntü değilse. – Niranjan

İlgili konular