110

Python用の優れたexif(交換可能な画像ファイル形式)操作ライブラリを探しています。私は、処理速度よりも柔軟性 (プロバイダー独自のタグを取得する機能など) を好みます。何を提案しますか?

4

12 に答える 12

65

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

免責事項:
実際、どれが最適かはわかりません。これは、私が Google と組み合わせてできたものです。:)

于 2009-04-19T13:21:28.380 に答える
59

私は最近pyexiv2を自分で使用していますが、私のニーズに非常にうまく合っているようです。もしかしたら、あなたにも合うかもしれません。

于 2009-04-19T14:00:38.707 に答える
31

Exiv2ベースのソリューション

Exiv2(exiv2:http ://exiv2.org/ )は、多くの画像タイプ(JPEG、PNG、TIFF、および多くのraw形式)へのメタデータの読み取りと書き込みをサポートする成熟したオープンソースのC ++ライブラリであり、標準(Xmp、IPTC)を理解しますおよびExif)および非標準メタデータ(「Makernotes」)であり、複数のプラットフォーム(Windows、Linux、および一部の作業ではMac)で実行されます。

exiv2へのPythonバインディングは次のとおりです。

pyexiv2の利点の1つは、Python2.7で使用できるWindowsビルドがあることです。gexiv2のWindowsビルドリクエストはこちらです:https ://bugzilla.gnome.org/show_bug.cgi?id = 712441

exiv2とバインディングはすべてオープンソース(GPL)です。

于 2011-05-11T15:02:59.410 に答える
5

PILを使用してください:)

import os,sys
from PIL import Image
from PIL.ExifTags import TAGS

if __name__ == '__main__':
    for (k,v) in Image.open(sys.argv[1])._getexif().iteritems():
        print '%s = %s' % (TAGS.get(k), v)
    os.system('pause')
于 2012-04-13T03:26:34.457 に答える
5

この記事では、純粋な Python を使用して EXIF メタデータを書き込む (読み取るだけでなく) Python モジュールについて説明します。どうやら、PIL、pyexif、EXIF-py のいずれも EXIF の書き込みをサポートしていないようです。pyexiv2 は最先端で、プラットフォーム固有のようです。

于 2009-11-15T01:57:39.793 に答える
4

http://redmine.yorba.org/projects/gexiv2/wikiのページ( https://wiki.gnome.org/Projects/gexiv2になりました)は次のようになります:

これは Python 2 または 3 のどちらでも同様に機能するため、GExiv2 は Python 2 のみをサポートする pyexiv2 の優れた代替品になります。

そのため、Python2 と Python3 の両方が GExiv2 でサポートされるようになりました。

朗報です。

于 2013-05-13T12:58:26.410 に答える
3

私はhttp://www.sno.phy.queensu.ca/~phil/exiftool/の周りで自分のラッパーを使用しています。 その理由は、それが非常に完全であり、開発者が非常にアクティブであるためです。そして、ほとんどすべての画像形式をサポートできないことは、それが必要とされるプロジェクトにとって絶対的なショートッパーです

もちろん欠点は、Pythonではないことです。そのため、私と同じように、サブプロセス呼び出しを使用する必要があります。

于 2012-06-09T09:34:52.763 に答える
3

私はPILのコードに基づいた独自の小さなライブラリを書き始めました。 こちらで確認してください

于 2011-01-23T20:02:52.303 に答える
3

http://www.emilas.com/jpeg/にあるGheorghe Milas の jpeg.py ライブラリも参照してください。これは、「JPEG EXIF、IPTC、および COM メタデータを解析、読み取り、書き込みするための Python ライブラリ」です。

欠点は、DynDNS を介して動的 IP でドメインをホストしているように見えるため、常に利用できるとは限らないことです。

于 2009-07-23T02:51:32.260 に答える
3

どういうわけか、上記の 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
于 2011-06-26T10:38:57.720 に答える
1

ASPN での PIL およびEXIF.pyの使用例がいくつかあります。

于 2009-07-23T05:17:45.703 に答える
0

Python 2.6 では、モジュールの場所が異なります。これを使って:

import Image    
from ExifTags import TAGS
于 2010-07-08T08:29:00.370 に答える