1

ユーザーが画像をアップロードできるモバイルアプリケーションで作業しています。これらの画像は、django バックエンドを使用して処理します。

リサイズした画像をサーバーに保存したい。

を使用して画像のサムネイルを作成しますが、画像PILのすべての exif データが失われます。サイズ変更された画像にexifデータを保存したい。

ライブラリを使用しgexiv2て元の画像のexifデータをコピーし、サイズ変更された画像に保存しようとしています:

exif = GExiv2.Metadata(file_path)

exif データを保持するために、サイズを変更した画像をディスクに保存し、次のgexiv2ファイル パスを使用します。

# exif of orginal image
exif = GExiv2.Metadata(file_path)

# exif of resized image
newExif = GExiv2.Metadata('img/512_c')

# save all exif data of orinal image to resized
for tag in exif.get_exif_tags():
    newExif[tag] = exif[tag]

# edit exif data - size 
newExif['Exif.Photo.PixelXDimension'] = str(im.size[0])
newExif['Exif.Photo.PixelYDimension'] = str(im.size[1]).

しかし、私の問題は、djangoがクライアントがアップロードした画像をファイルパスまたはバッファーとして提供することです。

ファイルパスを取得すると、元の画像のexifデータを取得するのに問題はありませんgexiv2.

gexiv2イメージ バッファを取得するとき、exif を取得するにはファイル パス パラメータが必要なため、exif データを直接取得することはできませんgexiv2。そのため、イメージ バッファを一時的にディスクに保存したいと考えています。

画像バッファをディスクに保存する最良の方法は何ですか?

4

1 に答える 1

0

最後に、解決策を得ました https://stackoverflow.com/a/11813684/658976 これにより、サーバーにアップロードされたすべての画像にファイルパスがあったことが確認されます(バッファリングされた画像はありません)。

于 2013-07-19T09:03:34.913 に答える