如何使用 PHP 从缺少图像扩展名的远程服务器保存图像

How to save image from remote server where image extension is missed using PHP

我使用 DOMDocument 提取包含图像文件的 html 页面,html 页面如下所示

<div>
   <img src="http://pic.aa.com/a/b/0525">
</div>

我把src地址提取出来后放到这个函数里

copy('http://pic.aa.com/a/b/0525', 'd:tmp/img_name');

我不明白的是如何决定文件应该有什么扩展名,uri没有任何线索,唯一可能的方法是使用 chrome 浏览器工具检查响应头,但是好像效率不高,有谁知道正确的做法吗?

好吧,我只能给你提示来使用这里提供的 exif_imagetype(); 函数:

http://php.net/manual/en/function.exif-imagetype.php

您可以使用 for/while/foreach 循环来确定图像类型,例如:

<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
    echo 'The picture is not a gif';
}
?>

还有这样的事情可能会帮助你:

<?php 
$filename = 'http://myhost/myunkownimagefiletype'; 
$size = getimagesize($filename); 

switch ($size['mime']) { 
    case "image/gif": 
        echo "Image is a gif"; 
        break; 
    case "image/jpeg": 
        echo "Image is a jpeg"; 
        break; 
    case "image/png": 
        echo "Image is a png"; 
        break; 
    case "image/bmp": 
        echo "Image is a bmp"; 
        break; 
} 
?>