目前,如果用户将照片发布/上传到我的php脚本中,我首先使用如下代码

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

然后我做了更多的东西,但我也试图能够得到一张照片从一个URL,并处理它与我现有的其他代码,如果我可以。所以我想知道,如果我用这样的东西
$image = ImageCreateFromString(file_get_contents($url));

然后我可以对我的$image变量运行getImageSize()吗?
更新
我刚试过…
$url = 'http://a0.twimg.com/a/1262802780/images/twitter_logo_header.png';
$image = imagecreatefromstring(file_get_contents($url));
$imageinfo = getimagesize($image);
print_r($imageinfo);

但没用,给了这个。
Warning: getimagesize(Resource id #4) [function.getimagesize]: failed to open stream: No such file or directory in

你知道我怎样才能做到这一点或者类似的东西来得到我想要的结果吗?

最佳答案

我建议您遵循以下方法:

// 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()getimagesize()要快得多,同样适用于ImageSX() /ImageSY(),而且它们不返回数组,也可以在图像被调整大小或裁剪之后返回正确的图像维度。
另外,在url上使用getimagesize()也不好,因为它将比PHP Manual中的替代exif_imagetype()消耗更多的带宽:
当找到正确的签名时,
适当的常数将是
否则返回值为
错误的。返回值相同
getimagesize()返回的值
指数2但是exif_imagetype()
更快。
这是因为exif_imagetype()只读取前几个字节的数据。

07-26 01:57