我尝试读取URL(其资源是图像)并在base64中对此图像进行编码,以将其保存在数据库中。
我浏览了Google和Stackoverflow,很多人都说不可能保存从网址读取的base64格式的图片。(这些是错的吗?)
我的步骤如下:
我解析了一个XML文件,其中有一个图像的URL。我试图在数据库中以base64格式保存此图像。
有人能帮助我吗?
答案 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编码版本,您可以使用它来执行任何操作。