2009-12-27 18 views
6

Sadece geçerli bir GD resim kaynağına sahip olmak, orijinal görüntünün türünü bulmak mümkün mü? ÖrneğinPHP/GD - Resim Kaynağı Türünü Bulma

:

$image = ImageCreateFromPNG('http://sstatic.net/so/img/logo.png'); 

Ben orijinal resim türü (PNG) sadece $ görüntü değişken kullanılabilir olması alabilir miyim?

+0

Buradaki bir şey, yalnızca kodunuz için kullanılabilen bir resim kaynağı tanımlayıcısı ile, orijinal dosyanın bu nesneye ne olduğu önemli değildir. Neden bilmen gerekiyor? – dqhendricks

cevap

4

Sanmıyorum, hayır. $ image, ImageCreate() işlevi tarafından işlendikten sonra GD'nin dahili görüntü biçimindedir. o $ görüntü değişkeninden yapılabilir eğer

+0

Teşekkürler Pekka. Ne yazık ki ben de öyle düşünmüyorum, ama bunun için bir yol bulabilir mi diye biraz daha bekleyeceğim. –

+0

Arka plan nedir? Belki de sorununuz için farklı bir çözüm var mı? –

+1

Bu doğrudur - görüntü GD'nin dahili biçimindedir, böylece kullanılabilir herhangi bir formatta çıkarılabilir. Biçimi algılamanın tek yolu, orijinal görüntü dosyasını kullanmaktır. –

9

Emin değilim, ama MIMETYPE almak için, genellikle dört herhangi birini kullanabilirsiniz: İstediğini almak soru açıklamasından

// with GD 
$img = getimagesize($path); 
return $img['mime']; 

// with FileInfo 
$fi = new finfo(FILEINFO_MIME); 
return $fi->file($path); 

// with Exif (returns image constant value) 
return exif_imagetype($path) 

// deprecated 
return mime_content_type($path); 

$tmpfname = tempnam("/tmp", "IMG_"); // use any path writable for you 
$imageCopy = file_get_contents('http://www.example.com/image.png'); 
file_put_contents($tmpfname, $imageCopy); 
$mimetype = // call any of the above functions on $tmpfname; 
unlink($tmpfname); 

Not: böyle bir şey yapabileceğini böylece bu işi yapmak için, uzak bir dosyayı kullanmak MimeTürü işlev eğer kullanacağı uzaktan dosyaları destekler, doğrudan kullanmak yerine dosyanın bir kopyasını oluşturma ilk

Yalnızca hangi imagecreatefrom işlevinin kullanılacağını belirlemek için MimeType öğesine ihtiyacınız varsa, önce dosyayı bir dize olarak yüklemeyin ve sonra GD'nin karar vermesine izin verin, ör.

// returns GD image resource of false 
$imageString = file_get_contents('http://www.example.com/image.png'); 
if($imageString !== FALSE) { 
    $image = imagecreatefromstring($imageString); 
} 
+0

Hayır, istediğim bu değil çünkü yola erişimim yok. = \ –

+0

Ama * bazı * yollara erişiminiz var mı? – Gordon

+0

Hayır, sadece açılan görüntü kaynağının kendisinde değil. –

0

sadece png yükleyici ile kaynağı yüklenirken deneyebilirsiniz ve bir png görüntü değilse, o YANLIŞ dönen, başarısız olur. Ardından, sahip olmak istediğiniz geçerli biçimlerin her birini tekrarlayın ve hepsi başarısız olursa, bir hata görüntüleyiniz.

+0

Kaynağı açmak sorun değil ... –