19

この例のように、PILを使用できますか?

データを読み取るだけで、最も簡単な方法を探しています( pyexivをインストールできません)

編集:これを行う唯一の方法が、ExempiとBoostを必要とするライブラリ( python-xmp-toolkitpyexiv2、...)を使用することだとは信じたくありません。別のオプションがあるはずです!

4

5 に答える 5

13

よく似たものを探していたところ、PHP の同等の質問に出くわし、答えを Python に翻訳しました。

f = 'example.jpg'
fd = open(f)
d= fd.read()
xmp_start = d.find('<x:xmpmeta')
xmp_end = d.find('</x:xmpmeta')
xmp_str = d[xmp_start:xmp_end+12]
print(xmp_str)

その後、xmp_str を変換し、XML API で解析できます。

于 2011-11-14T10:20:21.603 に答える
3
with open( imgFileName, "rb") as fin:
    img = fin.read()
    imgAsString=str(img)
    xmp_start = imgAsString.find('<x:xmpmeta')
    xmp_end = imgAsString.find('</x:xmpmeta')
    if xmp_start != xmp_end:
        xmpString = imgAsString[xmp_start:xmp_end+12]

    xmpAsXML = BeautifulSoup( xmpString )
    print(xmpAsXML.prettify())

または、Python XMP Toolkit を使用できます

于 2013-01-31T23:50:56.977 に答える
3

これを行うための「適切な」簡単な方法があるかどうかも知りたいです。

それまでの間、PyAVMで純粋な Python を使用して XMP パケットの読み取りを実装しました。関連するコードはこちらです。多分これはあなたに役立つでしょうか?

于 2011-07-26T02:13:24.783 に答える
1

PILソース(1.1.7)を検索すると、Tiffファイル内のXMP情報を認識できることがわかりますが、アプリケーションレベルでPILを使用してXMP情報を操作するための文書化または非文書化APIの証拠は見つかりません。

ソースに含まれているCHANGESファイルから:

+ Support for preserving ICC profiles (by Florian Böch via Tim Hatch).

  Florian writes:

  It's a beta, so still needs some testing, but should allow you to:
  - retain embedded ICC profiles when saving from/to JPEG, PNG, TIFF.
     Existing code doesn't need to be changed.
  - access embedded profiles in JPEG, PNG, PSD, TIFF.

  It also includes patches for TIFF to retain IPTC, Photoshop and XMP
  metadata when saving as TIFF again, read/write TIFF resolution
  information correctly, and to correct inverted CMYK JPEG files.

そのため、XMPのサポートはTIFFに限定されており、TIFFイメージがロードされ、場合によっては変更され、保存されたときにのみXMP情報を保持できます。アプリケーションはXMPデータにアクセスまたは作成できません。

于 2011-07-26T23:05:50.233 に答える