📅  最后修改于: 2023-12-03 15:23:35.047000             🧑  作者: Mango
在一些情况下,我们需要将图片转换成 base64 格式,以便于在不通过网络请求的情况下将图片展示到网页中。这时候,我们通常会使用 Canvas 来完成这个转换过程。但是在某些情况下,我们不想使用 Canvas,那么该怎么办呢?
下面介绍一种可以在不使用 Canvas 的情况下将图片转换成 base64 的方法。
我们可以使用 XMLHttpRequest 对象来加载图片,并使用 FileReader 对象将加载的图片文件转换成 base64 格式。
实现代码如下:
function loadImage(url, callback) {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var reader = new FileReader();
reader.onloadend = function() {
callback(reader.result);
}
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
}
在上面的代码中,loadImage 函数接收两个参数:图片的 url 和回调函数。该函数使用 XMLHttpRequest 对象来发送一个 GET 请求,并设置 responseType 为 blob,这样就能够获取到图片文件的二进制数据。
当请求成功后,我们使用 FileReader 对象来读取获取到的图片文件,然后使用 readAsDataURL 方法将其转换成 base64 格式,并将结果通过回调函数返回。
使用该方法可以很方便地将任意图片转换成 base64 格式,而不需要使用 Canvas。
上面介绍了一种在不使用 Canvas 的情况下将图片转换成 base64 格式的方法。该方法使用了 XMLHttpRequest 和 FileReader 对象,可以很方便地将任意图片转换成 base64 格式,并将结果通过回调函数返回。