如果从.png重命名为.jpg,请检查图像类型

时间:2012-03-03 15:04:51

标签: php image

如果可以检查图像类型是否已从.png重命名为.jpg

我需要这个,因为当我使用调整大小功能时,如果上传的图像从.png重命名为.jpg(我让我的代码只接受.jpg图像),我的网站就会停止工作

6 个答案:

答案 0 :(得分:12)

每个.png都以这些字节开头:

89 50 4E 47 0D 0A 1A 0A

他们是PNG签名。如果.jpg以这些字节开头,则不是jpg。

答案 1 :(得分:10)

getimagesize将包含有关图片类型的信息:

$info = getimagesize('file.png');
if($info[2] == IMAGETYPE_JPEG){

}

答案 2 :(得分:2)

您始终可以使用exif_imagetype()

读取图像类型以检查图像
$image_type = exif_imagetype($filename);

示例:

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

答案 3 :(得分:2)

是的,你可以使用这个

if($_FILES["imagefile"]["type"] == "image/jpeg")
{

return true;

}

else if($_FILES["imagefile"]["type"] == "image/png")

{

return false;

}

或者您应该使用此mime_content_type更可靠,因为$_FILES["imagefile"]["type"]可以从客户端伪造......

答案 4 :(得分:2)

您需要知道的不是文件的历史,而是它的真实格式。您可以通过检查文件的内容来做到这一点:JPG文件应以FF D8字节开头,以FF D9结束。 PNG文件以不同的签名开头:\ 211 P N G \ r \ n \ 032 \ n(十六进制:89 50 4E 47 0D 0A 1A 0A)。

有关更多信息,请访问此网站: http://en.wikipedia.org/wiki/Magic_number_%28programming%29

答案 5 :(得分:0)

尝试file命令。

unknownimage是JPG图片时:

$ file unknownimage 
unknownimage: JPEG image data, baseline, precision 8, 400x400, frames 3

unknownimage文件是PNG图片时:

$ file unknownimage 
unknownimage: PNG image data, 779 x 701, 8-bit/color RGBA, non-interlaced