如果可以检查图像类型是否已从.png
重命名为.jpg
?
我需要这个,因为当我使用调整大小功能时,如果上传的图像从.png重命名为.jpg(我让我的代码只接受.jpg图像),我的网站就会停止工作
答案 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