如何判断一个文件是否是jpeg格式? |
您所在的位置:网站首页 › 照片怎么查看是不是jpg › 如何判断一个文件是否是jpeg格式? |
在处理训练样本的时候,有时你发现,虽然文件是jpg, jpeg结尾的,但是可能是被篡改过的,其实它有可能是png格式,假如这种图片很多,如何方便批处理呢? 两种方式: (1) JPEG的文件布局如下: JPEG SOI : FF D8 // 图片起始 JPEG APP0:0xFFE0 // APP0 SIZE:1D 23 //当前标记的长度 JFIF Flag:JFIF // JFIF 标识 VERSION:// 版本号 ATTRIBUTION: // 长宽、DPI等信息 JPEG APP1: FF E1 APP1 Size : 1C 45 // 注意:前面这三个WORD都是big endian的 EXIF Flag : 'Exif', 0, 0 --------- TIFF : // TIFF格式的EXIF数据 --------- JPEG APPn: FF En // APPn 标记,可选 DQT :0xFFDB //Define Quantization Table,定义量化表 SOF0:0xFFC0 //Start of Frame,帧图像开始 DHT:0xFFC4 //Difine Huffman Table,定义哈夫曼表 SOS:0xFFDA // Start of Scan,扫描开始 12字节 压缩数据 JPEG EOI : FF D9 // 图片结束 JPEG图片的标记 每一个JPEG文件的内容都开始于一个二进制的值 '0xFFD8', 并结束于二进制值'0xFFD9'。 所以,判断函数如下(is_jpg): import os import sys import cv2 from PIL import Image def is_jpg(filename): data = open(filename, "rb").read(11) if data[:2] != '\xff\xd8': return False if data[-2:] != '\0xff\0xd9': return False return True def is_jpg_pil(filename): try: img = Image.open(filename) return img.format == "JPEG" except: return False(2)通过PIL Image直接判断: 如:上面的is_jpg_pil函数
参考博客:https://blog.csdn.net/shelldon/article/details/54144406(JPEG详细介绍) |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |