2

私はexif.pyライブラリを使用しています。通話後

tags=exif.process_file(...)

画像がキャプチャされた時間を取得したい。だから私は続ける

t =tags['Image DateTime'] if tags.has_key('Image DateTime') else time.time()

今、djangoのデータベースにtを保存したいと思います。そのため、 t は 2010-07-20 14:37:12 の形式である必要がありますが、明らかに exif 2010:07:20 14:37:12 を配信しますが、私が行くと

type(t)

の結果である float とは対照的に、「インスタンス」を返します。

type(time.time())

または文字列のタイプである「str」。EXIFがdjangoモデルに詰め込むために与えた値を解析するにはどうすればよいですか?

4

4 に答える 4

2

時間タプルを任意の形式にフォーマットするよりも、値time.strptime()を解析するために使用します。str()

EXIF によって返される「Image DateTime」属性を使用した例。

>>> e1['Image DateTime']
(0x0132) ASCII=2007:09:06 06:37:51 @ 176
>>> str(e1['Image DateTime'])
'2007:09:06 06:37:51'
>>> 
>>> tag = time.strptime(str(e1['Image DateTime']),"%Y:%m:%d %H:%M:%S")
>>> tag
time.struct_time(tm_year=2007, tm_mon=9, tm_mday=6, tm_hour=6, tm_min=37, tm_sec=51,tm_wday=3, tm_yday=249, tm_isdst=-1)
>>> time.strftime("%Y-%m-%d %H:%M:%S", tag)
'2007-09-06 06:37:51'
>>> 
于 2010-07-20T13:13:35.207 に答える
1

Django はdatetimeオブジェクトに最適です。文字列はに変換できますがdatetime、文字列に注目すべきではありません。datetime適切なオブジェクトを作成することに集中する必要があります。

選択肢 1. exif 時間の実際のクラスを把握します。の代わりにtype(t)t.__class__それが実際に何であるかを確認してください。また、dir(t)どのようなメソッドがあるかを確認します。適切な float 値またはtime.struct_time値を作成するメソッドを持つ場合があります。

選択肢 2. で時間文字列を解析しdatetime.datetime.strptimeて、適切なdatetimeオブジェクトを作成します。これを読んでください:http://docs.python.org/library/datetime.html#datetime.datetime.strptime

于 2010-07-20T13:04:47.417 に答える
0

tags ['Image DateTime']が存在する場合、「2010:07:20 14:37:12」のような文字列を返すと仮定すると、次を使用できます。

if tags.has_key('Image DateTime'):
    t = tags['Image DateTime'].replace(':', '-' , 2)
else:
    t = time.strftime('%Y-%m-%d %H:%M:%S')

replaceexifからのタイムストリングを修正します:

>>> '2010:07:20 14:37:12'.replace(':', '-', 2)
    '2010-07-20 14:37:12'

現地時間ではなくGMTが必要な場合

time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime())
于 2010-07-20T13:24:44.727 に答える
0

exif.py が IFD_Tag のインスタンスを返すようです。必要な値は t.values にある場合があります。また、datetime.strptime() を使用して、exif データから取得した文字列を解析することもできます。

于 2010-07-20T13:03:20.260 に答える