主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Python: Exifを読み書きするモジュールを作る プロトタイプ完成

                
tags: python
http://elicon.blog57.fc2.com/blog-entry-397.html
 前回にExifを読み書きするモジュールが欲しいということで、とりあえず読み書きするものを書いてみた。それをリファクタリングやらなんやら編集して、モジュールとして使えるものを作った。Exifの読み書きに加えて、これまでにExifの移植や削除ツールも作っていたので、それらを一つのモジュールとしてまとめ、PyPIに上げてみた。Python2.7と3.4で動作確認済み。
https://pypi.python.org/pypi/Piexif

Functions
--------
dump - 辞書型からExifのバイト列へ
load - Exifのバイト列から辞書型へ
remove - JPEGファイルのExifを削除
thumbnail - Exifをもったまま縦横比固定でリサイズ
transplant - JPEGファイルのExifを他のJPEGファイルへ移植

 モジュール名はPiexif。わかりやすくPyexifとかexiftoolって名前にできたらよかったんだけど、それらはすでに使用されていた。まあテンプレーティングだとjinja2とか、WebフレームワークだとFlaskなりTornadoなり、一見して"名は体を示す"になってないモジュール命名がけっこうあるし仕方ないかということで。
使用例
# dump
im = Image.open("in.jpg")
im.thumbnail((100, 100), Image.ANTIALIAS)
zeroth_ifd = {282: (96, 1),
283: (96, 1),
296: 2,
305: 'paint.net 4.0.3'}
exif_bytes = piexif.dump(zeroth_ifd=zeroth_ifd)
im.save(output_file, exif=exif_bytes)

# load
zeroth_dict, exif_dict, gps_dict = piexif.load("in.jpg")

# remove
piexif.remove("in.jpg", "out.jpg")

# thumbnail
piexif.thumbnail("in.jpg", "out", (80, 80))

# transplant
piexif.transplant("exif_src.jpg", "image.jpg", "out.jpg")


 PyPIに上げるにあたってライセンスを適用した。Githubに上げているぐらいなので、これを誰かに使ってもらって金を云々というつもりは全然ない。そんなスタンスで使ってもらったり改変、配布などしてもらってもとくに困らなそうなMITライセンスを選択。
 実装した上記の関数は相互依存があるわけでもなし。それぞれを編集しやすくするため、ファイルを分けて記述した。モジュールフォルダpiexifの中に__init__.pyとそれぞれの関数のためのスクリプトがある。この状態だと、関数にアクセスするためにpiexif.[script_name].[function]とちょっと冗長になってしまう。よって__init__.pyに下記のように記述した。
from .[script_name] import [function]
from .[script_name] import [function]

 あとはドキュメントを書いて、もうちょいテストしてブラッシュアップ。
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。