繁体   English   中英

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

[英]Check image type if renamed from .png to .jpg

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

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

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

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

它们是PNG签名。 如果.jpg以这些字节开头,那么它不是jpg。

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

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

}

您始终可以使用exif_imagetype()读取图像类型以检查图像

$image_type = exif_imagetype($filename);

例:

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

是的你可以使用它

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

return true;

}

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

{

return false;

}

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

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

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

尝试使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM