我可以在不知道其类型的情况下将图像读入GD吗?

时间:2011-02-11 18:46:48

标签: php gd

GD似乎有各种imagecreatefrom_x_功能,如果您提前知道图像类型,那就太棒了。在我的特殊情况下,我没有。有没有办法在不知道类型的情况下读取图像?

到目前为止,我唯一的选择是将其保存到磁盘(昂贵!),然后使用getimagesize(也提供mime类型) - 但这会导致我在图像中读取两次 - 一次确定MIME输入然后再将其读入GD。

或者,是否可以将变量视为文件?像这样的东西:

$image = file_get_contents('http://the.remote.file.com/myfile');

# doesn't work with already read in image ... can I treat this as a file w/o saving it?
$info = getimagesize($image);

2 个答案:

答案 0 :(得分:2)

您可以使用imagecreatefromstring(),这对于实际文件格式无关紧要,如果您已经在文件中阅读过,那么这是最佳选择。

但出于实际目的,您应该能够使用getimagesize($filename)。您之前不必读入文件。只需使用文件名或网址。

print_r(
   getimagesize("http://sstatic.net/stackoverflow/img/sprites.png?v=2")
);

答案 1 :(得分:1)

使用imagecreatefromstringimagesximagesy(后两个用于阻止其他请求,因为它似乎与您有关):

$image = imagecreatefromstring(file_get_contents('http://path/to/image.jpg'));
list($width, $height) = array(imagesx($image), imagesy($image));