2017-07-28 8 views
0

Pythonで小さなスクリプトを作成しました。これは、自分のファイル名に基づいて古いWhatsapp写真のexifデータを設定できます。exifデータを変更した後にPython PIL(Pillow)で写真のサイズを変更します

私はpiexifとPIL(Pillow)パッケージを使用します。

import piexif 
from PIL import Image 
from collections import defaultdict 

img = Image.open(fname) 

try: 
    exif_dict = piexif.load(img.info["exif"]) 
except KeyError: 
    exif_dict = defaultdict(dict) 

exif_dict['Exif'][piexif.ExifIFD.DateTimeOriginal] = exiftime(date) 
exif_dict['Exif'][piexif.ExifIFD.DateTimeDigitized] = exiftime(date) 

exif_bytes = piexif.dump(exif_dict) 
img.save('%s' % fname, "jpeg", exif=exif_bytes) 

exiftime()関数は、日付を書式設定するためのものです。

しかし、スクリプトはいくつかのexifフィールドを設定しています。私はそのような圧縮やsometingを変更しません。

私の問題は、そのスクリプトを実行した後、画像がはるかに小さくなることです。 私はいくつかのサンプル画像でこのスクリプトをテストしました。解像度6000x4000のNikon D5300で撮影した画像。元のファイルは約12Mbで、スクリプトの後には4Mbしかありません。

スクリプトが画像の画質を落としますか、それとも単なる圧縮ではありますか?

答えて

1

枕の.saveは、ドキュメントに従ってデフォルトで75%の品質で自動的に圧縮されます。圧縮率を100%に抑えることができます(品質= 100追加)。圧縮を最小限に抑え、一部の圧縮コンポーネントを完全にスキップするように見えますが、枕は圧縮を完全にスキップする能力はありません。これを行うパッケージはごくわずかですが、私はPythonモジュールの形で何かを認識していません。ドキュメントは95以上の品質を上げないと言いますが、そうすることでより大きいファイルが出力されることを証明できます。

関連する問題