PHP imagecreatefromstring ve getimagesize

4 Cevap php

Bir kullanıcı POST / benim PHP komut dosyası için bir fotoğraf göndermesi durumunda Şu anda bu gibi bazı kod ile başlar

getimagesize($_FILES['picture1']['tmp_name']);

Ben o zaman bir LOT daha fazla şeyler yapmak ama ben de bir URL'den bir fotoğraf olsun ve ben eğer benim diğer mevcut kodu ile işlem yapabilmek için çalışıyorum. Ben böyle bir şey kullanmak f SO ben, bilmek isteyen am

$image = ImageCreateFromString(file_get_contents($url));

Sonra benim $ image değişken üzerinde getimagesize () çalıştırmak mümkün olacaktır?



UPDATE

Sadece bu çalıştı ...

$url = 'http://a0.twimg.com/a/1262802780/images/twitter_logo_header.png';
$image = imagecreatefromstring(file_get_contents($url));
$imageinfo = getimagesize($image);
print_r($imageinfo);

Ama işe yaramadı, bu verdi.

Warning: getimagesize(Resource id #4) [function.getimagesize]: failed to open stream: No such file or directory in

Ben sonuç almak için bu ya da benzer bir şey yapmak nasıl bir fikrin Sonra ben?

4 Cevap

Ben bu yaklaşımı takip öneririz:

// if you need the image type
$type = exif_imagetype($url);

// if you need the image mime type
$type = image_type_to_mime_type(exif_imagetype($url));

// if you need the image extension associated with the mime type
$type = image_type_to_extension(exif_imagetype($url));

// if you don't care about the image type ignore all the above code
$image = ImageCreateFromString(file_get_contents($url));

echo ImageSX($image); // width
echo ImageSY($image); // height

exif_imagetype() çok daha hızlı getimagesize() daha kullanarak, aynı ImageSX() / ImageSY() için de geçerli, artı onlar diziler {return yok [ görüntü resized veya örneğin kırpılmış sonra (4)]} de doğru görüntü boyut dönebilirsiniz.

Bu alternatif çok daha fazla bant genişliği tüketen olacak çünkü Ayrıca, getimagesize() URL'ler kullanarak iyi değil exif_imagetype(), gelen PHP Manual:

When a correct signature is found, the appropriate constant value will be returned otherwise the return value is FALSE. The return value is the same value that getimagesize() returns in index 2 but exif_imagetype() is much faster.

exif_imagetype() sadece veri ilk birkaç byte okumak olacak olmasıdır.

Zaten bir görüntü kaynak var ise, imagesx ve imagesy fonksiyonlarını kullanarak boyutunu almak istiyorum.

getimagesize HTTP ile kullanılabilir.

Filename - Bu bir yerel dosyayı başvuruda bulunabilir veya (yapılandırma izin) a remote file using one of the supported streams.

Böylece

$info = getimagesize($url);
$image = ImageCreateFromString(file_get_contents($url));

ince olmalıdır.

Bu yardımcı olacaktır emin, ama benzer bir sorun koştum ve benim ana bilgisayar tarafından kontrol duvarı benim sunucudan giden http bağlantısını bloke oldu çıktı değildir.

Bunlar güvenlik duvarı ayarlarını değiştirdi. Benim kod sonra çalıştı.

BTW: Ben URL'ler bir dizi () file_get_contents çalıştığımızda bu bir sorun olabileceğini düşündüm, hiçbiri çalıştı!