• ベストアンサー

画像データか判断する手段

var data = base64エンコードされた文字列; 正常系では画像データをbase64エンコードしたデータを渡そうと思ってますが、 念のため渡されたデータが画像データなのかチェックをjavascriptでしたいと考えてます。、 しかしその手段がわかりません。 サーバサイドにデータを渡せばなんとか判断できるのですが、、、 javascript(+HTML)にて判断するアイディアを教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>ご紹介いただいたページは事前に拝見しておりましたが、bse64デコードされた文字からバイナリに復元する方法がわからなったです・・ バイナリに復元せずとも「テキストの状態(base64でエンコードされた文字列のままの状態)で、ある程度の判定は可能」です。 ANo.1の回答で示されたサンプルプログラムの、28~36行目を見て下さい。 このプログラムでは、対象を「バイナリ」で読み込んで ・頭の2バイトが「16進数でFF、D8」ならJPEG画像 ・頭の3バイトが「文字でPNG」ならPNG画像 ・頭の3バイトが「文字でGIF」ならPNG画像 ・頭の2バイトが「文字でBM」ならBMP画像 という判定をしています。 これら「16進数でFF、D8」や「文字でPNG」などは「Base64にエンコードしたら、特定の決まった文字列になる筈」です。 なので「Base64のまま、頭の数文字を見れば、画像『らしい』と言う事は判断できます。 ただし、あくまでも『らしい』としか判りません。 正確に画像ファイルかどうか判定するには「ちゃんとバイナリに戻して、ファイルヘッダーが画像ファイルの仕様に従ったバイナリデータなのかチェックする必要」があります。 なお、以下に「Base64のエンコードとデコード」が説明されています。 http://hakuhin.jp/js/base64.html フリーのライブラリに、javascript用の「Base64のエンコードとデコードをするライブラリ」があるので、ネットで検索してみて下さい。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

で、Base64のjavascriptのライブラリは http://user1.matsumoto.ne.jp/~goma/js/base64.html にあります。 使い方は、ソースコードを見て下さい。

すると、全ての回答が全文表示されます。
  • heburusu
  • ベストアンサー率85% (140/164)
回答No.1

こんにちわ。 バイナリ形式でファイルの先頭数バイトを読み込んで、一応チェックできるようです。 参考URLにはbase64ではありませんが、JavaScriptでイメージの形式をチェックするプログラムが掲載されております。

参考URL:
http://kinsentansa.blogspot.jp/2013/04/javascript.html
muuming2001
質問者

お礼

ありがとうございます。 ご紹介いただいたページは事前に拝見しておりましたが、bse64デコードされた文字からバイナリに復元する方法がわからなったです・・

すると、全ての回答が全文表示されます。

関連するQ&A