如何使用 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;
}
?>
我使用 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;
}
?>