如果将图片从.png重命名为.jpg,需要检查图片类型。

3

是否有可能检查图像类型是否从.png重命名为.jpg

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


你正在使用什么过程来调整大小?你应该查看它并查看它如何保存调整大小的图像,并强制将其保存为“.jpg”格式。 - Henesnarfel
6个回答

13
每个png文件都以这些字节开头:
89 50 4E 47 0D 0A 1A 0A

这些是PNG文件的签名。如果一个.jpg文件以这些字节开头,那么它就不是一个jpg文件。


10

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

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

}

2

您可以使用exif_imagetype()函数来检查图像的类型。

$image_type = exif_imagetype($filename);

例子:

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

2

是的,您可以使用这个

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

return true;

}

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

{

return false;

}

或者你应该使用这个mime_content_type,因为$_FILES ["imagefile"] ["type"]可以从客户端伪造... 这个函数更加可靠。

谢谢,但我已经尝试过了。重命名的 .png 图片的图像类型是“Image/jpeg”。 - John

2
你需要了解的不是文件的历史,而是它的实际格式。你可以通过检查文件的内容来确定其格式:JPG文件应以字节FF D8开头,并以FF D9结尾。PNG文件则以不同的标识开头:\211PNG\r\n\032\n(十六进制为89 50 4E 47 0D 0A 1A 0A)。
点击此网站获取更多信息。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接