Python: удалить exif информацию с изображений

Чтобы уменьшить размер изображений, которые будут использоваться на веб-сайте, я уменьшил качество до 80-85%. Это уменьшает размер изображения до некоторой степени.

Чтобы уменьшить размер без ущерба качеству, мой друг отметил, что необработанные изображения с камеры содержат много метаданных, называемых информацией exif. Поскольку нет необходимости сохранять эту информацию exif для изображений на веб-сайте, мы можем ее удалить. Это уменьшит размер на 3-10 kb.

Но я не могу найти соответствующую библиотеку, чтобы сделать это в моем коде на Python. Я просмотрел связанные вопросы и опробовал некоторые из методов:

Исходное изображение: http://mdb.ibcdn.com/8snmhp4sjd75vdr27gbadolc003i.jpg

  1. Mogrify

    /usr/local/bin/mogrify -strip filename 

    Результат: http://s23.postimg.org/aeaw5x7ez/8snmhp4sjd75vdr27gbadolc003i_mogrify.jpg Этот метод уменьшает размер от 105kb до 99.6kb, но также изменил качество цвета.

  2. Exif-инструмент

     exiftool -all= filename 

    Результат: http://s22.postimg.org/aiq99o775/8snmhp4sjd75vdr27gbadolc003i_exiftool.jpg Этот метод уменьшает размер от 105kb до 72.7kb, но также изменил качество цвета.

  3. В этом ответе подробно рассказывается об управлении информацией exif, но как его использовать для удаления информации?

Может ли кто-нибудь направить меня, как я могу удалить все лишние метаданные без изменения цветов, размеров и других свойств изображения?

3 Solutions collect form web for “Python: удалить exif информацию с изображений”

Вы можете попробовать загрузить изображение с помощью Python Image Lirbary (PIL), а затем снова сохранить его в другом файле. Это должно удалить метаданные.

 import Image image_file = open('image_file.jpeg') image = Image.open(image_file) # next 3 lines strip exif data = list(image.getdata()) image_without_exif = Image.new(image.mode, image.size) image_without_exif.putdata(data) image_without_exif.save('image_file_without_exif.jpeg') 

Для меня gexiv2 отлично работает:

 #!/usr/bin/python3 from gi.repository import GExiv2 exif = GExiv2.Metadata('8snmhp4sjd75vdr27gbadolc003i.jpg') exif.clear_exif() exif.clear_xmp() exif.save_file() 

См. Также Exif-манипуляционную библиотеку для python , с которой вы связались, но не прочитали все ответы;)

  • распознавание изображения python
  • PIL - libjpeg.so.8: невозможно открыть файл общего объекта: такой файл или каталог отсутствует
  • Создание градиента цвета в Python
  • Обрезать изображение с помощью PIL в python
  • Преобразование PIL GdkPixbuf
  • Как обновить изображение виджета Tkinter Label?
  • PLE-кодировщик jpeg недоступен
  • как отображать и закрывать изображение в python?
  • Python PIL Изображение в автоматическом изменении метки
  • Ожидаемая длина данных PIL Image.frombuffer при использовании массива ctypes
  • Проблемы с Snow Leopard, Django & PIL
  • Python - лучший язык программирования в мире.