php - 检查图像是否有不正确的文件扩展名,然后解决

时间:2014-03-26 16:41:31

标签: php image

我为客户建立了一个CMS,他试图上传他用Android平板电脑拍摄的截图。图像是png格式,上传很好,但是当我尝试用PHP将其转换为jpg(就像我对网站上的所有图像一样)并创建缩略图时,文件没有被转换。我的转换代码可以完美地用于其他所有图像。

当我将图像下载到我的计算机并尝试用photoshop打开它时,它说"无法完成您的请求,因为文件格式模块无法解析文件。"所以我将文件扩展名更改为.jpg并且photoshop完美地打开了文件,然后它也完美地上传和转换,生成正确的缩略图。我猜测该文件被编码为jpg,但不知何故,Android平板电脑将其标记为png?我的问题是,PHP中是否有任何方法可以检查图像的编码,然后适当地更改文件扩展名?

3 个答案:

答案 0 :(得分:1)

您可以使用finfo_file()查看文件的内部结构。这将允许您检索文件的MIME类型。虽然它不是100%万无一失,但对于图像来说,它应该可以正常工作。

答案 1 :(得分:1)

我相信如果您执行以下操作:

$extension = explode('.', $_FILES['file']['name']);
$extension = end($extension);
if($extension=="gif" && $_FILES['file']['type']=="image/gif") {
//Continue
} else {
//Rename file here
}

这应该让你开始,希望你明白我的目标。

答案 2 :(得分:0)

使用php函数getimagesize。此功能还将返回图像格式详细信息。

$size = getimagesize($filename);
if (is_array($size)) {
  echo 'width: '.$size[0].' height: '.$size[1].' type: '.$size[2];
   // check type as IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_BMP
} else {
  echo 'unknown image format.';
}