关于jpg文件格式的一个情景-第一篇

情景:我有两张扫描的图,得到的文件属性中,水平和垂直分辨率DPI的数据是错误的,我需要将其改正过来。

image

 首先说点基础知识:JPEG的图像格式

原文地址:https://blog.csdn.net/QQ135102692/article/details/124828301

  一般来说,大家都接受的文件格式都会有一定的组织标准,不然传输过程中的编码和解码就会很混乱。既然jpeg格式这么常见,必然有其优势,当然肯定也有大家权衡之下可以接受的不足。

  按jpeg之前的标准,它是一种搞笑但有损(损失很小)的一种图像文件格式,它是一种很灵活的图片压缩方式,用户可以在压缩比和图片品质之间进行权衡。不过,通常来讲,其压缩比在10:1到40:1之间,压缩比越大,品质就越差,压缩比越小,品质就越好。

image

  代码判断是否为jpg格式:

  如上图,就是判断前面3个字节是什么,如果发现是FF D8 FF开始,那就认为它是JEPG图片。(注意android不是根据后缀名来判断是什么文件的,当然你必须是图片的后缀名文件管理器才可以打开)。

  JPEG图片格式组成:

  JPEG图片格式组成部分:SOI(文件头)+APP0(图像识别信息)+ DQT(定义量化表)+ SOF0(图像基本信息)+ DHT(定义Huffman表) + DRI(定义重新开始间隔)+ SOS(扫描行开始)+ EOI(文件尾)

  

  我们遇到的问题,需要关注的内容是:APP0图像识别信息

APP0(图像识别信息)

--------------------------------------------------------------------------
名称      字节数     值                   说明
--------------------------------------------------------------------------
段标识       1         FF
段类型       1         E0
段长度       2         0010                    如果有RGB缩略图就=16+3n
  (以下为段内容)
交换格式      5         4A46494600          “JFIF”的ASCII码
主版本号      1
次版本号      1  
密度单位      1         0=无单位;1=点数/英寸;2=点数/厘米
X像素密度     2                             水平方向的密度   
Y像素密度     2                             垂直方向的密度
缩略图X像素  1                           缩略图水平像素数目  
缩略图Y像素  1                           缩略图垂直像素数目
(如果“缩略图X像素”和“缩略图Y像素”的值均>0,那么才有下面的数据)
RGB缩略图  3×n         n=缩略图像素总数=缩略图X像素×缩略图Y像素

image

 多写一点:APP1 -------> APPN (N=1~15)  这个可能会有用

   含义:应用程序保留标记x

        标记码:0xFFE1~0xFF..(手机照片通常包含APP1,内容由地点,时间等)

解析APP0同上(我们这里使用JPEG没有APP0,略过)

其他有兴趣的,可以参考原文或者官网

posted @ 2025-08-05 16:50  Wind_Swing_Dunn  阅读(279)  评论(0)    收藏  举报