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

スポンサーサイト

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

Piexifjs: JavaScript Exif Library

                
tags: JavaScript
 StackoverflowをながめていたらクライアントサイドのJavaScriptでExifをいじりたいというのがあった。Githubで探すとJavaScriptでExif関連のライブラリはけっこう出てくるのだけど、Exifを読むのがせいぜいで、Exifを編集するものはないらしい。……PythonでExifをいじるためにPiexifというライブラリを書いたが、特殊なものに依存してるわけでもなし、これのJavaScriptへの書き換えはそうハードルが高くないように思える。PiexifをJavaScriptに移植すればクライアントサイドでExifがいじれる初のライブラリが……というわけで書き換えた。突貫で書き換えて軽いリファクタリングしかしていない。テストはまだ書いていないが、手動でキャノン、カシオ、オリンパス、パナソニック、リコー、シグマ、ソニーのWebページから取ってきたサンプルを試してある。
https://github.com/hMatoba/piexifjs

 JavaScriptのクライアントサイドでそんなことしてどうすんのとも思うが、FileAPIなりCanvasAPIなりでクライアントサイドでもJPEGファイルにアタッチする手段が実装されてだいぶ経つ。そんなわけで多少意味はあるだろうし、手元にある自分のPythonライブラリをポートするだけなのでやってみた。

サンプルコード
var exifStr = piexif.dump({"0th":{282:[100, 1], 283:[100, 1]}});
var reader = new FileReader();
reader.onloadend = (function(theFile) {
return function(e) {
var inserted = piexif.insert(exifStr, e.target.result);

var image = new Image();
image.src = inserted;
image.width = 200;
var el = $("<div></div>").append(image);
$("#resized").prepend(el);
};
})(f);
reader.readAsDataURL(f);



 デバッグしながら感じたが、JavaScriptのユルユルな仕様が悪さをしてくれるかもしれない。オブジェクトの未定義のプロパティにアクセスしたらエラーではなくundefinedが返ってくるし、そのundefinedに数値や文字列を足してもエラーでなくなにかしら値が返ってくる。……エラー吐いてほしい。型違いの値の演算を適当なキャストで実行されるのは厄介なところ。
 個人的にJavaScriptはおもしろい言語だと思っている。クラスがないとか言われるけどオブジェクトがあるからいいじゃんと思っているし。しかし今回手間を取らせてくれたユルユルの仕様のことを考えるとなんとも。AltJSはあまり考えていなかったけど静的型付けのTypeScriptをいってみるべきかという気分になった。
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

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

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