web-dev-qa-db-ja.com

HTML画像からbase64でエンコードされたデータを取得する方法

ユーザーがアバターを選択できる登録フォームがあります。 2つの可能性があります。

  1. デフォルトのアバターを選択してください
  2. 自分のアバターをアップロードする

私のHTMLページにはこれがあります。

<img id="preview" src="img/default_1.png">

選択したアバターが表示されます。 File Apiを使用して、ユーザーが自分の画像をアップロードできるようにします。これにより、HTMLイメージのsrcは次のようになります。

<img id="preview" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA... />

登録フォームを投稿するとき。データはRESTサービスに送信されます。ユーザーが自分でアバターをアップロードしたときにbase64でエンコードされたデータを送信できます。しかし、デフォルトのアバターを処理する方法は?エンコードされたデータ。

32
Jonas Anseeuw

次のサンプルを試すことができます http://jsfiddle.net/xKJB8/3/

<img id="preview" src="http://www.gravatar.com/avatar/0e39d18b89822d1d9871e0d1bc839d06?s=128&d=identicon&r=PG">
<canvas id="myCanvas" />

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var img = document.getElementById("preview");
ctx.drawImage(img, 10, 10);
alert(c.toDataURL());
39

FileReaderクラスを使用することもできます。

    var reader = new FileReader();
    reader.onload = function (e) {
        var data = this.result;
    }
    reader.readAsDataURL( file );
10
httpete