Python用の優れたexif(交換可能な画像ファイル形式)操作ライブラリを探しています。処理速度よりも柔軟性(プロバイダーの独自のタグを取得する機能など)が好きです。何を提案しますか?
あなたはチェックアウトしたいかもしれません exif-py :
TiffおよびjpegファイルからEXIFデータを抽出するPythonライブラリ。非常に使いやすい-$ ./EXIF.py image.jpg
または Python Imaging Library(PIL) :
Python Imaging Library(PIL)は、画像処理機能をPythonインタープリターに追加します。このライブラリは多くのファイル形式をサポートし、強力な画像処理およびグラフィックス機能を提供します。
適切な名前のpyexifもあります: http://pyexif.sourceforge.net/
Pyexif pythonライブラリとツールは、それを含むJpegおよびTiffファイルからEXIF情報を抽出することを目的としています。この情報は通常、デジタルカメラ、デジタルフィルムスキャナー、等.
ただし、pyexifはまだしばらく更新されていないようです。彼らはEXIF-pyをチェックアウトするトリックをしていない場合はお勧めしますので、sourceforgeページには最近いくつかのアクティビティがあるようなので、おそらく最初にそれを試してみてください、それほどではありませんが。最後に、PILを使用してこれを行うことができます。
from PIL import Image
from PIL.ExifTags import TAGS
def get_exif(fn):
ret = {}
i = Image.open(fn)
info = i._getexif()
for tag, value in info.items():
decoded = TAGS.get(tag, tag)
ret[decoded] = value
return ret
免責事項:
。 :)
私は最近自分で pyexiv2 を使用していますが、これは私のニーズに非常によく合っているようです。おそらくあなたにも合うかもしれません。
Exiv2(exiv2: http://exiv2.org/ )は、多くの画像タイプへのメタデータの読み書きをサポートする、成熟したオープンソースのC++ライブラリです。 (JPEG、PNG、TIFFおよび多くの生のフォーマット)、標準(Xmp、IPTCおよびExif)および非標準のメタデータ(「Makernotes」)を理解し、複数のプラットフォーム(Windows、Linux、および一部の作業でMac)で実行。
Exiv2へのPythonバインディングは次のとおりです。
Pyexiv2の利点の1つは、python 2.7。に使用可能なWindowsビルドがあることです。gexiv2のWindowsビルドリクエストは次のとおりです。 https://bugzilla.gnome .org/show_bug.cgi?id = 712441
exiv2およびバインディングはすべてオープンソース(GPL)です。
PILを使用:)
import os,sys
from PIL import Image
from PIL.ExifTags import TAGS
if __== '__main__':
for (k,v) in Image.open(sys.argv[1])._getexif().iteritems():
print '%s = %s' % (TAGS.get(k), v)
os.system('pause')
この記事 は、純粋なPythonを使用してEXIFメタデータを(単に読み取るだけでなく)書き込むためのPythonモジュールについて説明しています。明らかに、PIL、pyexif、EXIF-pyのいずれもEXIFの書き込みをサポートしていません。 pyexiv2は、最先端のプラットフォーム特有のものです。
http://redmine.yorba.org/projects/gexiv2/wiki のページは読み取りnow:
これはPython 2または3でも同様に機能します。これにより、GEXiv2はpyexiv2の優れた代替品となり、Python 2。
そのため、Python2とPython3の両方がGExiv2でサポートされるようになりました。
良いニュース。
私は独自のラッパーを使用しています http://www.sno.phy.queensu.ca/~phil/exiftool/ 。そして、ほとんどすべての画像形式をサポートできないということは、それが必要とされるプロジェクトにとって絶対的なものです
もちろん、欠点はpythonではないため、私と同様にサブプロセス呼び出しを使用する必要があります。
また、Gheorghe Milasのjpeg.pyライブラリを http://www.emilas.com/jpeg/ で見ることもできます。これは、「A python解析するライブラリ、JPEG EXIF、IPTCおよびCOMメタデータの読み取りと書き込み。」
欠点は、DynDNSを介して動的IPでドメインをホストしているように見えるため、常に利用できるとは限らないことです。
私は、PILのコードに基づいた独自の小さなライブラリを書き始めました。 ここで確認してください 。
どういうわけか、上記のPaoloのコードで_getexifのattributeErrorを取得します。Python 2.6.6およびPIL 1.1.7を使用しています。 _getexifは現在廃止されていますか?
これは私のために働いた小さな修正です。
from PIL import Image
from PIL.ExifTags import TAGS
def get_exif(fn):
ret = {}
i = Image.open(fn)
# info = i._getexif()
info = i.tag.tags
for tag, value in info.items():
decoded = TAGS.get(tag, tag)
ret[decoded] = value
return ret
[〜#〜] aspn [〜#〜] にはPILとEXIF.pyの使用例がいくつかあります
Python 2.6ではモジュールの場所が異なります。これを使用してください:
import Image
from ExifTags import TAGS