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

スポンサーサイト

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

JavaScript: ローカルファイルを読み込んでバイナリデータをいじる binary hacks

                
tags: JavaScript
 FireFox, GoogleChrome, IE10, Operaなどの主要ブラウザではFileReaderというオブジェクトが使えるようになっていて、ローカルファイルを読み込みこんで、そのデータをあつかうことができる。データはテキスト、ArrayBuffer、base64エンコードされた文字列の3種類のうちからどれで表現されたものを返すか選択できる。たとえばJPEGデータをArrayBufferで返すと、ArrayBufferの中身はJPEGをバイナリエディタで開いたときと同様の数値の並びが見られる。もちろん自分で関数を書くか探すかすれば、3種類のデータを相互変換することができる。

 Canvasには画像を読み込むことができ、描かれた画像をJPEGなどの標準的な形式で出力できるようになっている、base64エンコードされているが。base64エンコードで出力されたJPEGファイルにデコードをかければ、一般的なJPEGファイルと同一のバイナリデータの並びが得られる。このバイナリデータの値をいじることは、ファイルを編集することと同義である。


 Web上に転がっているJPEGのリサイズスクリプトでは、リサイズによってExifが抜け落ちるものしか見つからない。しかしExifを維持したいユーザはいて、stackoverflowでその要請を確認することができる。
Image resize before upload
Pure Javascript image handling library (in binary form, not through DOM)


 FileReaderやCanvasが使えることを考えつつ、バイナリデータをいじることでJPEGファイルをJavaScriptで、Exifデータを維持したまま縮小するスクリプトを書いた。
Resize a JPEG Image by JavaScript Keeping EXIF

 バイナリデータはArrayBufferオブジェクトを使えば、そのままポストすることができる。ではファイルが複数あってデータの入ったArrayBufferが複数ある場合のポストは? ケーススタディとして。
JavaScript: to process and post multiple binary files
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

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

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