html js 新窗口打开base64图片链接,js 图片转base64的方式(两种)

本文介绍了两种使用JavaScript将图片转换为Base64编码的方法:一种利用Blob和FileReader对象,另一种借助canvas.toDataURL()。同时,内容中提供了详细代码示例,包括处理图片跨域问题,可用于新窗口打开Base64格式的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方式一:Blob和FileReader 对象

实现原理:

使用xhr请求图片,并设置返回的文件类型为Blob对象[xhr.responseType = "blob"]

使用FileReader 对象接收blob

js 图片转base64方式

getBase64("https://z649319834.github.io/Learn_Example/video_track/webvtt.jpg")

function getBase64(imgUrl) {

window.URL = window.URL || window.webkitURL;

var xhr = new XMLHttpRequest();

xhr.open("get", imgUrl, true);

// 至关重要

xhr.responseType = "blob";

xhr.onload = function () {

if (this.status == 200) {

//得到一个blob对象

var blob = this.response;

console.log("blob", blob)

// 至关重要

let oFileReader = new FileReader();

oFileReader.onloadend = function (e) {

let base64 = e.target.result;

console.log("方式一》》》》》》》》》", base64)

};

oFileReader.readAsDataURL(blob);

//====为了在页面显示图片,可以删除====

var img = document.createElement("img");

img.onload = function (e) {

window.URL.revokeObjectURL(img.src); // 清除释放

};

let src = window.URL.createObjectURL(blob);

img.src = src

document.getElementById("container1").appendChild(img);

//====为了在页面显示图片,可以删除====

}

}

xhr.send();

}

方式二:canvas.toDataURL()方法

实现原理:

使用canvas.toDataURL()方法

需要解决图片跨域问题 image.crossOrigin = '';

使用了Jquery库的$.Deferred()方法

js 图片转base64方式

let imgSrc = "https://z649319834.github.io/Learn_Example/video_track/webvtt.jpg";

//width、height调用时传入具体像素值,控制大小 ,不传则默认图像大小

function getBase64Image(img, width, height) {

var canvas = document.createElement("canvas");

canvas.width = width ? width : img.width;

canvas.height = height ? height : img.height;

var ctx = canvas.getContext("2d");

ctx.drawImage(img, 0, 0, canvas.width, canvas.height);

var dataURL = canvas.toDataURL();

return dataURL;

}

function getCanvasBase64(img) {

var image = new Image();

//至关重要

image.crossOrigin = '';

image.src = img;

//至关重要

var deferred = $.Deferred();

if (img) {

image.onload = function () {

deferred.resolve(getBase64Image(image));//将base64传给done上传处理

document.getElementById("container2").appendChild(image);

}

return deferred.promise();//问题要让onload完成后再return sessionStorage['imgTest']

}

}

getCanvasBase64(imgSrc)

.then(function (base64) {

console.log("方式二》》》》》》》》》",base64);

}, function (err) {

console.log(err);

});

demo展示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值