私が持っているとしましょう<img/>
。この img にはsrc='http://somelocation/getmypic'
. 後で、バイナリ データを受け取る ajax 呼び出しに基づいて img の内容を変更したい場合があります。画像に適用するかどうかは、ajax コールバックでデータを受け取って初めてわかります。私はしないと決めるかもしれません。
私が行った調査からわかる限り、img にバイナリ データを設定する唯一の方法は、バイナリ データを base64 エンコードし、img src を結果の base 64 エンコード文字列に設定することです。
私の最初の主な質問は、オーバーヘッドとは何ですか? これは、画像ダウンロードの処理とメモリ使用量が 3 倍になったことを意味するのではないですか? 私のajaxコールバックは、メモリにロードされたバイナリデータを取得し、次にバイナリストリームをベース64でエンコードし、ブラウザはこのストリームをデコードしてバイナリに戻しますか? それとも、何かが足りないのですが、実際にはそれほど悪くはありませんか?
私の 2 番目の質問は、base64 エンコーディングなしでバイナリ データを img に直接設定する方法がないのはなぜですか? 私が使用したほとんどの UI 言語では、ファイルから「PictureBox」(たとえば ) に画像をロードしたり、「PictureBox」に描画したりできます。これが img で許可されないのはなぜですか? 私は src を「バイナリ」またはそのようなものに設定する img.binary=bytes を考えています。この機能は img と canvas に分割されているようですが、両方を実行したい場合もあります。私の理解に何かが欠けているのではないかと思っています (たとえば、バイナリ データを img に直接設定できないようにすることには、設計または実装上の利点があります)。
ありがとうございました。