2011-01-31 7 views
10

Javascript変数に画像データ(JPEGまたはPNGのいずれか)があります。イメージをHTMLドキュメントに表示するにはどうすればよいですか?これらは、非常に大きな画像やURIが長すぎるため、これが動作しないようなコードです:Javascript変数のデータからHTMLイメージを作成

// doesn't work because the URI is too long 
$('img#target').attr('src', 'data:...'); 

キャンバスを使用すると、おそらく答えですが、私は、画像データとそれをロードする方法を見つけ出すことはできません。

あなたが不思議に思っている場合は:いいえ、画像データを直接imgタグにダウンロードすることはできません。サーバーから暗号化され、Javascriptを使用してブラウザ内で復号化されました。

おかげで、
- アートZ.

+3

データURIとキャンバスの両方がどこでも完全にサポートされているわけではありません。暗号化を行い、それを通常のイメージとして提供するサーバーを介してイメージをプロキシするのはどうでしょうか? – deceze

答えて

8

はキャンバスに描画するデータのURLを使用するには:this question/answerパー

var img = new Image; 
img.onload = function(){ 
    myCanvasContext.drawImage(img,0,0); 
}; 
img.src = "data:..."; 

はあなたがsrconloadを設定していることを確認してください。

はURIが長すぎます」と言っていますが、これが意味することは明確ではありません。 IE8だけがデータURIに32kBの制限を持っています。他のブラウザでは正常に動作するはずです。エラーが発生した場合は、それを説明してください。

+0

これは大きな画像です。たとえば、img.src = "data:..."というデータが1MB以上ある場所でもかまいませんか? (IE8はサポートしていません。) –

+0

@ArtZはい、うまくいくはずです。テストするのは簡単ですが、正しいですか? – Phrogz

+0

@Phogzはい、そうです。これはIE以外でも動作します。私が抱えていた問題は、ワークフローの初期段階でデータが混乱していることが原因であるようです。バグをどこか別の場所に見せてくれてありがとう。 –

4

それは

$('img#target').attr('src', 'data:...'); 

は、すべてのIE以外では動作しないことが判明しました。私の問題は他の場所で起こった。

関連する問題