2016-10-29 25 views
1

Я попытался добавить комментарий к своему изображению, и он уменьшил размер файла. У меня есть три изображения, все имеют разные размеры файлов и разные данные EXIF-комментариев пользователя. Изображение без комментариев является самым большим. Почему изображение без комментариев является самым большим? Редактируя данные EXIF, я сжимаю или изменяю изображение.Почему размер моего изображения уменьшается, когда я добавляю комментарий к изображению?

  • У меня есть изображение 2007KB. Он не содержит комментариев пользователя в , это данные exif.
  • Когда я добавляю комментарий («Привет, я люблю картошку», просто тестовый комментарий) через страницу свойств (Windows 10) уменьшает размер моего изображения до 1991 КБ.
  • Когда я использую скрипт python для добавления комментария пользователя («blah blah blah»), он уменьшает размер файла до 726 КБ.

Помимо данных для файлов и EXIF, я не обнаружил других различий в изображениях. Я увеличил изображение и не заметил различий. Я просмотрел остальные данные EXIF, и есть некоторые отличия. Различия в

  • EXIF ​​InteroperabilityOffset
  • EXIF ​​OffsetSchema
  • EXIF ​​Перетяжка
  • GPS GPSProcessingMethod
  • Изображение ExifOffset
  • Image GPSInfo
  • Image Перетяжка
  • Изображение XPComment
  • Interoperability InterOperabilityIndex
  • Interoperability InteroperabilityVersion
  • миниатюрное JPEGInterchangeFormat
  • миниатюрное JPEGInterchangeFormatLength.

Если у вас есть другие вопросы, пожалуйста, дайте мне знать.

Вот питон скрипт:

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)) 
+0

Проверили ли вы ответ? Не забудьте принять/проголосовать, если это правильно. Благодаря! – Dekel

ответ

4

При сохранении изображения (im.save(filename, 'jpeg', exif=exif_bytes)) с использованием библиотеки PIL есть качество по умолчанию, которое вы используете. Это default is 75 (что означает - если ваше исходное изображение находится в более высоком качестве - во время сохранения - качество изображения уменьшится, а также размер изображения.

Вы можете изменить качество с помощью quality=X (X = 1-> 95, Вы должны избегать любого числа выше 95):

im.save(filename, 'jpeg', exif=exif_bytes, quality=95) 

Обратите внимание, что это может создать изображение с более высоким размером, чем размер вашего исходного изображения.

Существует вопрос в стеке относительно исходного качества изображения, вы можете проверить больше здесь: Determining JPG quality in Python (PIL)