gpt4 book ai didi

javascript - 如何使用 JavaScript 将图像转换为 Base64 字符串?

转载 作者:行者123 更新时间:2023-11-28 04:44:06 26 4
gpt4 key购买 nike

我需要将图像转换为 Base64 字符串,以便可以将图像发送到服务器。

有没有相关的 JavaScript 文件?否则,我该如何转换它?

最佳答案

有多种方法可供选择:

1。方法:FileReader

通过XMLHttpRequest将图像加载为blob并使用 FileReader API ( readAsDataURL() ) 将其转换为 dataURL :

function toDataURL(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();
}

toDataURL('https://www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0', function(dataUrl) {
console.log('RESULT:', dataUrl)
})

此代码示例也可以使用 WHATWG fetch API 来实现:

const toDataURL = url => fetch(url)
.then(response => response.blob())
.then(blob => new Promise((resolve, reject) => {
const reader = new FileReader()
reader.onloadend = () => resolve(reader.result)
reader.onerror = reject
reader.readAsDataURL(blob)
}))


toDataURL('https://www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0')
.then(dataUrl => {
console.log('RESULT:', dataUrl)
})

这些方法:

  • 有更好的压缩
  • 也适用于其他文件类型

浏览器支持:

提示:要转换本地文件,您可以使用 live-server 。启动包含要转换的图片的文件夹后,在浏览器中打开 URL,然后使用开发人员控制台将图像转换为 Base 64。

<小时/>

2。方法: Canvas (适用于旧版浏览器)

将图像加载到图像对象中,将其绘制到未受污染的 Canvas 上,并将 Canvas 转换回 dataURL。

function toDataURL(src, callback, outputFormat) {
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function() {
var canvas = document.createElement('CANVAS');
var ctx = canvas.getContext('2d');
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage(this, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
callback(dataURL);
};
img.src = src;
if (img.complete || img.complete === undefined) {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}

toDataURL(
'https://www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function(dataUrl) {
console.log('RESULT:', dataUrl)
}
)

In detail

支持的输入格式:

图像/png图像/jpeg图像/jpg图像/gif图像/bmp图像/tiff图像/x-icon图像/svg+xml图像/webpimage/xxx

支持的输出格式:

图像/png图像/jpeg图像/webp(chrome)

浏览器支持:

<小时/>

3。方法:来自本地文件系统的镜像

如果您想从用户文件系统转换图像,您需要采取不同的方法。使用FileReader API :

function encodeImageFileAsURL(element) {
var file = element.files[0];
var reader = new FileReader();
reader.onloadend = function() {
console.log('RESULT', reader.result)
}
reader.readAsDataURL(file);
}
<input type="file" onchange="encodeImageFileAsURL(this)" />

关于javascript - 如何使用 JavaScript 将图像转换为 Base64 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43536652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com