有效检测损坏的jpeg文件?
2022-08-31 00:50:15
有没有一种有效的方法来检测jpeg文件是否损坏?
背景信息:
解决方案需要从php脚本
中工作jpeg文件在磁盘
上手动检查是否没有选项(用户上传的数据)
我知道这是可以做到的。但这样做的速度相当慢。imagecreatefromjpeg(string $filename);
有谁知道更快/更有效的解决方案吗?
有没有一种有效的方法来检测jpeg文件是否损坏?
背景信息:
解决方案需要从php脚本
中工作jpeg文件在磁盘
上手动检查是否没有选项(用户上传的数据)
我知道这是可以做到的。但这样做的速度相当慢。imagecreatefromjpeg(string $filename);
有谁知道更快/更有效的解决方案吗?
从命令行中,您可以使用jpeginfo来找出jpeg文件是否正常。
$ jpeginfo -c test.jpeg
测试.jpeg 260 x 264 24位 JFIF N 15332 [确定]
从php调用jpeginfo应该是微不足道的。
我最简单(也是最快)的解决方案:
function jpeg_file_is_complete($path) {
if (!is_resource($file = fopen($path, 'rb'))) {
return FALSE;
}
// check for the existence of the EOI segment header at the end of the file
if (0 !== fseek($file, -2, SEEK_END) || "\xFF\xD9" !== fread($file, 2)) {
fclose($file);
return FALSE;
}
fclose($file);
return TRUE;
}
function jpeg_file_is_corrupted($path) {
return !jpeg_file_is_complete($path);
}
注意:这仅检测损坏的文件结构,但不检测损坏的图像数据。