• ベストアンサー

imageタグの画像データを取得するには?

現在とある理由から、imageタグで取得した画像データをBase64エンコードしようとしています。 しかしながら、imageタグのどのプロパティにアクセスすれば画像データそのもの(srcに格納されているurlではなく)が取得できるかわかりません。 どうすればよいのでしょうか?

  • HTML
  • 回答数4
  • ありがとう数1

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

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

バイナリデータの場合は、特定のバイトコードのみ欠損するらしいです。 全部のデータが消えるわけではなかったので、普通に取得できるのかと思ってました。 すみません。 なんか、うまくいったっぽいです。 http://home.wi-wi.jp/lab/00t/ でもたぶん、対処療法だと思います。 req.responseType = "blob"; として、req.responseから取得するのが、たぶん今後の標準になると思いますが、 Safari5.1、Opera11、Chrome17、Fx10で取得できませんでした。 https://developer.mozilla.org/en/XMLHttpRequest

lain_003
質問者

お礼

色々ご丁寧にありがとうございます。 ただ結論からいうと自主解決しました。 具体的な方法としては、javascript内部でサーバからgetでデータを引っ張ってきただけです。一連の流れとしては http://lain003.blog51.fc2.com/blog-entry-49.html こんな感じです。 <<sessinoStorageとブラウザのキャッシュ この件ですが、sessionStorageは5MB保存できるみたいですが、キャッシュのほうは体感ですが1MBぐらい(画像4枚分程)しか保存できていないようです。 まああと、HTML5を使ってみたかっただけというのもあります。 <<canvas そのような方法があったんですね。これだといちいちbase64エンコードのメソッドをかかなくて便利そうですね。 ご回答ありがとうございました。

その他の回答 (3)

回答No.3

No.2です。 BBS投稿欄に直接書いたのでところどころ間違ってますが、すみません、適宜調整してください。 XHRを使ってAudioファイルをローカルストレージに保存できないかと作ってみました。 http://home.wi-wi.jp/lab/00s/ 結果的に失敗したようですが、 比較用に画像ファイルを保存してみると、どうやらcanvasで取得した物とXHRで取得した物でエンコード結果が違うので、 単純にXHRで取得して保存して終わりというわけにはいかないようです。 ご参考まで。

回答No.2

canvasにdrawImage()で描画して、toDataURL()で取り出せばBASE64エンコードしたデータを取得できます。 var img=document.getElementsByTagName('img')[0]; var canvas=document.createElement('canvas'); canvas.width=img.width; canvas.height=img.height; canvas.getContenxt('2d').drawImage(img); var imageData=canvas.toDataURL('image/png'); alert(imageData);//BASE64エンコード済み var newImage=new Image(); newImage.src=imageData; document.body.appendChild(newImage); canvas未対応ブラウザや、 raw data(バイナリデータ)を取りたい場合はそのままでは無理ですが、 XHR(またはactiveXObject)を使ってimage.srcにアクセスし、responseTextを取得すれば取り出せます。 (文法上はresponseTextはDOMStringということになっていますが、バイナリデータでも問題ないようです。) ローカル対応のウェブアプリでなければ、 image.srcを保存するだけにして、描画する際は、画像本体を随時ネットからダウンロードしてきても良いのではないでしょうか? (sessionStorageはブラウザを閉じればデータが消えます。 その時間であればブラウザキャッシュとして残っているので、「img.src=http://ストレージに保存したURL」で十分高速な読み込みができるのではないでしょうか。)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

主語と状況がわかりません。 誰がですが、  もし、そのページを開いてみているユーザーでしたら、その画像をいったん保存してPerlなりを使ってでコードすることになるでしょう。なぜなら、HTMLに埋め込まれたデータは、ブラウザが必要と判断して、改めてサーバーに対して要求して得られるものだからです。  言い換えれば、HTMLを解析して、必要な画像のURLを判断し、それをそのデータの存在するサーバーに対してHTTPプロトコルで要求し取得してこなければなりません。SRCに書かれているURL以外に手に入れようがないからです。それを自動的にしたければ、ブラウザのアドオンでも作成してブラウザにさせるしかない。  これをサーバーサイドでしたい場合も同じで、サーバーでソケット通信が許可されていれば、この動作をさせることになります。  

lain_003
質問者

補足

申し訳ありません。少し説明不足がすぎました。 自分のやりたいことは、クライアント(ここでいうブラウザ?)がhtmlを解析して得たURLを元にhttpプロトコルを利用し取得した画像データを、HTML5から提供されるsessionStorageを使ってブラウザにデータを保存さしたいのです(Base64エンコードをするのはそのためです)。 ただここで問題となるのがどうやって保存対象の画像データ(ブラウザがimgタグを解析し取得した画像データ)にアクセスするかです。 また何かお気づきの点、説明不足の点がございましたらお返事いただけると幸いです。

関連するQ&A

  • 画像データの取得と格納

    原因がなにかわからず困っています。 アドバイスをください。 やりたいことは -------------------------------------------------- (1)一時保管用のテーブル内から画像データをPHPにて表示。 (2)その後、他のテーブルに画像ファイルを格納。 -------------------------------------------------- (1)は取得できていて表示も可能。 ただ、それをAテーブルに格納すると画像データが壊れているのか×マークで表示され画像が表示できない。 プロパティで表示したときの画像パスから直接画像を表示しても表示できず。 phpMyAdmin上で画像ファイルを差し替えると表示可能。 以上のことからデータの内容が破損と思われる。 Aテーブルに格納する際、$temp_dataのバイナリを取得したものをそのまま放り込んでいますがこれがいけないのでしょうか? バイナリ以外のデータは正常に格納できています。 問題の画像データはJPEGで 取得・格納のデータ型はlongblob型。 mysql 5.0.67 php 5.2.6 Linux RedHat 2.6.9-78.ELsmp 本当に困っています。 よろしくお願いします。

    • 締切済み
    • PHP
  • phpでの画像出力

    フォームでアップロードした画像(jpg)を、base64でエンコードしてテキストとしてDBに格納しています。 そのデータをDBから取り出して、PHPで出力したいのですが、上手く行きません。 下記のような手順で試しましたが、ダメでした。 ※php5とMySQLです。 $img = base64_decode("※DBから取り出したテキスト"); header("Content-type: image/jpeg"); echo $img; 尚、下記のような形では画像表示出来ましたが、出来ればphpからの出力をしたいと考えています。 <img src="data:image/jpeg;base64,※DBから取り出したテキスト" /> php初心者ですが、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 画像タグについて

    画像タグについて テキストエディタにHTML(タグ)を入力してホームページの作成を目指して勉強しています。 ボタンの画像を横一列で4つ並べる場合のでタグの入力の仕方なんですが、 使用しているテキストでは改行せずに横に並べてタグを入力していきましょう。 となっています。 正解→<img src="A" ><img src="B" ><img src="C" ><img src="D" > 不正解↓ <img src="A" > <img src="B" > <img src="C" > <img src="D" > 理由としてはブラウザできれいに表示されるからだそうです。 実際にやってみると確かに不正解パターンより正解パターンの方がブラウザで隙間なくきれいに表示されています。 疑問なのですが、同じタグを縦で入力するか横に入力するかで なぜ、ブラウザの表示に違いで出るのでしょうか? また、<img src="" >タグ以外でも,改行しないで横に入力するタグはあるのでしょうか? それはどうやって見分けるのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • DBからPHP出力された画像の情報取得について

    Linux、PHP4.3.11、MySQLの環境でPHPスクリプトの作成を試行しています。 MySQLの BLOB型 に格納された画像バイナリを呼び出してそのまま出力するスクリプトを作成し、同スクリプトから出力された画像ファイルのサイズや種別情報を「getimagesize()」で取得しようとしているのですがうまく行きません。 画像出力の処理は、MySQLからバイナリのデータを読み出して HTTP HEADER をつけてそのまま出力する処理を行っています。 // 画像出力処理 <?php $image = /* DBからバイナリを取得する処理 */ header("Content-type: image/jpeg\n\n"); echo $image; exit(); ?> 上のスクリプトをWEBブラウザで呼び出すと画像を表示する事ができます。 また、<img src="画像出力スクリプトのURL">としてHTML中に記述しても画像を表示できます。 しかし、getimagesize() で画像情報を取得しようとしても False となり、画像の構成情報を取得できません。 // 画像情報取得処理 <?php $src = "http://画像出力スクリプトのURL"; var_dump(getimagesize($src)); exit(); ?> $src にローカルにある実ファイル画像を指定した場合( "./hoge.jpeg" )や 他のWEBサーバ上にある画像ファイルを指定した場合( "http://よそのサーバURL/hoge.jpeg" )等は画像情報をちゃんと取得できます。 画像出力用のスクリプトで行わなければならない処理が何か不足しているのでしょうか。 原因となりそうな物が分かる方がいらっしゃいましたらご教示お願いいたします。

    • ベストアンサー
    • PHP
  • タグについて

    画像の貼り付けタグ <img src="">は わかるのですが <img class="image" src=""> あいだにある class="image" は何を意味するのでしょうか?教えて下さい。

  • 画像データの左寄タグについて

    以下の内容を実現するタグは、どのようにすればいいでしょうか。 1.画像データを左寄せして文字を右に回りこませる。 2.画像データの左右に任意のスペースを空ける。 3.画像データの左右の任意のスペースは異なっている。 <img src=".~~" class="fl-l"/>で単純な左寄せはできるのですが、、、

    • ベストアンサー
    • HTML
  • WebBrowserでAタグ取得

    VB9でWebBrowserを使ってホームページにアクセスしているのですが、 そのページにある全てのAタグのURLとAタグの表示テキストを取得したいのですが、どのようにすれば良いでしょうか? WebBrowser1.Navigate(URL) ...待ち 受信完了 ここまではできています。 この後のAタグを取得するコードが知りたいです。

  • 2つのタグを合わせる

    <img src="画像URL" style="filter:Alpha(Style=2)"> このタグは普通の画像を丸の形に変化させるタグなんですが、このタグを 背景を左下に固定させるスタイルシート <STYLE type="text/css"> <!-- BODY { background-image : url("壁紙のURL"); background-attachment: fixed; background-position:0% 100%; background-repeat: no-repeat ; } --> </STYLE> この2つのタグを合わせたいのですがそんなことが出来ますか? [つまり、固定する画像に変化をつけたいんです] 意味不な質問でごめんなさい。 分かる方、ご回答願います。

  • HTMLタグで素材画像にリンクを貼ったら…

    HTMLタグで素材画像にリンクを貼ったら、その周りを紫色の四角い枠が、その素材画像を囲んでしまいます。 この四角い枠を無くす方法は無いでしょうか? <a href="HP URL" title="コメント"><img src="画像URL"></A> こういうタグなのですが。 何か足りないタグがあるのだと思うのですが分かりません。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • 画像データにタグ付けする方法

    タグによる画像データ(JPEG等)の管理ソフトを作ろうとしてます。 WindowsXPでの動作を考えていますが、そもそも画像データのタグはファイルのどの部分に記憶させればよいのでしょうか?それをプログラムで変更できますか? プログラムでプロパティの概要情報を編集したりできないかとも考えています。 開発環境はHSPにしようと思っていますが、難しいようならばVBやC++などでもかまいません。 何かヒントになるようなアドバイスでもいいのでお願いします。

専門家に質問してみよう