当我在图像上添加评论时,为什么图像尺寸会减小?

Gre*_*reg 1 python windows exif image file

我试图在图像中添加评论,但减小了文件大小。我有三个图像,它们都有不同的文件大小和不同的用户注释EXIF数据。没有注释的图像最大。为什么没有评论的图像最大?通过编辑EXIF数据,我可以压缩或更改图像。

  • 我有一个2007KB的图像。它的exif数据中不包含用户注释。
  • 当我通过属性页(Windows 10)添加评论(“嗨,我喜欢土豆”只是一个测试评论)时,它将图像的大小减小到1991KB。
  • 当我使用python脚本添加用户注释(“等等等等”)时,它将文件大小减小到726KB。

除了文件大小和EXIF数据外,我在图像中没有发现其他差异。我放大了图像,但没有注意到差异。我浏览了EXIF的其余数据,但有一些差异。区别在于

  • EXIF互操作性偏移
  • EXIF偏移模式
  • EXIF填充
  • GPS GPS处理方法
  • 图片ExifOffset
  • 影像GPSInfo
  • 图像填充
  • 图片XPComment
  • 互操作性互操作性指数
  • 互操作性InteroperabilityVersion
  • 缩略图JPEGInterchangeFormat
  • 缩略图JPEGInterchangeFormatLength。

如果您还有其他疑问,请告诉我。

这是python脚本:

import piexif
import os.path 
from PIL import Image

def writeExifComment(filename,comment):

    im = Image.open(filename)
    fileExtension = os.path.splitext(filename)[1]
    exif_dict = piexif.load(im.info["exif"])
    exif_dict["Exif"][piexif.ExifIFD.UserComment] = comment
    exif_bytes = piexif.dump(exif_dict)
    im.save(filename, 'jpeg', exif=exif_bytes)
    im.close()

def readExifComment(filename):

    data = piexif.load(filename)
    exif = data['Exif']
    comment = exif.get(37510, '').decode('UTF-8')
    return comment

filename = '1.jpg'

writeExifComment(filename,"blah blah blah")
print(readExifComment(filename))
Run Code Online (Sandbox Code Playgroud)

Dek*_*kel 5

im.save(filename, 'jpeg', exif=exif_bytes)使用PIL库保存图像()时,会使用默认质量。这个默认值是75(这意味着-如果你的原始图像更高质量-保存过程中-图像的质量会下降,而且图像的大小。

您可以使用quality=X(X = 1-> 95,请避免使用大于95的数字)来更改质量:

im.save(filename, 'jpeg', exif=exif_bytes, quality=95)
Run Code Online (Sandbox Code Playgroud)

请注意,它可能会创建尺寸大于原始图像尺寸的图像。

堆栈上有一个关于图像原始质量的问题,您可以在此处查看更多信息:在Python(PIL)中确定JPG质量