39

我有一个注册表单,用户可以在其中选择头像。他们有两种可能性:

  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 编码数据。但是如何处理默认头像?它是一个 url 而不是 base64 编码的数据。

4

2 回答 2

47

您可以尝试以下示例 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());
于 2013-04-02T10:09:13.000 回答
10

您还可以使用 FileReader 类:

    var reader = new FileReader();
    reader.onload = function (e) {
        var data = this.result;
    }
    reader.readAsDataURL( file );
于 2014-01-06T00:31:14.557 回答