从Url读取图像并将其保存在h64 / phonegap的base64中

时间:2014-03-11 20:32:17

标签: javascript jquery html5 cordova base64

我尝试读取URL(其资源是图像)并在base64中对此图像进行编码,以将其保存在数据库中。

我浏览了Google和Stackoverflow,很多人都说不可能保存从网址读取的base64格式的图片。(这些是错的吗?)

我的步骤如下:

我解析了一个XML文件,其中有一个图像的URL。我试图在数据库中以base64格式保存此图像。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

我不能轻易地将这个例子放在一起,但它应该是可能的,假设图像来自您运行代码的同一域,或者您可以控制图像的交叉原点标题(或否则你会得到一个跨源错误。)

假设是这种情况,你可以。这是一个JSFiddle,我在其中编码JSFiddle的徽标:http://fiddle.jshell.net/5S6BY/(因为该徽标与代码运行的域位于同一个域,它可以工作)。

诀窍是将它绘制到画布上,然后将该画布转换为base64。

以下是代码:

var url = "http://fiddle.jshell.net/img/logo.png";
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
var ctx = canvas.getContext('2d');

var image = new Image();
image.crossOrigin = 'anonymous';
image.addEventListener('load', function() {
    ctx.drawImage(image, 0, 0, image.width, image.height);
    document.body.innerHTML = canvas.toDataURL();
});
image.src = url;

这很直截了当。加载图像,将图像绘制到画布上,然后调用canvas.toDataUrl()以获取base64编码版本,您可以使用它来执行任何操作。