不同场景将图片转换为base64格式
<body>
<div>
<p style=" font-size: 18px;
font-weight: bold;">手动选择图片生成base64编码</p>
<input type="file" id="myfileinput" onchange="change()" multiple>
</div>
<div style="margin-top:20px;overflow: hidden;">
<p style=" font-size: 18px;
font-weight: bold;">
将已展示的图片生成base64
</p>
<img id="jpg" src="./img/404.png" alt="" style="width: 200px;height: 200px;">
<div>
<button style="font-size: 20px;" onClick="trans()">点击生成</button>
</div>
</div>
<div style="margin-bottom:20px;margin-top:20px;overflow: hidden;">
<p style="font-size: 18px;
font-weight: bold;">
随便给一个图片路径转成base64
</p>
<div>
<input id="urlImg" type="text" placeholder="输入图片地址">
<button style="margin-top: 15px;font-size: 20px;" onClick="autoTrans()">点击生成</button>
</div>
</div>
<div>
<textarea id="base64" style="width: 500px;height: 500px;word-wrap: break-word;"
placeholder="base64编码"></textarea>
</div>
<div style="margin: 30px;">
<button style="font-size: 30px;" onCLick="preview()">点击预览</button>
</div>
</body>
// 调用方法
function change() {
let fileInput = document.getElementById("myfileinput");
// files 是一个 FileList 对象(类似于NodeList对象)
let files = fileInput.files; // 获取上传的文件对象
let imgobj = new Image();
let url = window.URL || window.webkitURL;
imgobj.src = url.createObjectURL(files[0]);// 这里传的是File对象
let imgBaseStr = undefined;
// img.onload 实现图片预加载方法
imgobj.onload = function () {
// 进行转码
imgBaseStr = getBase64Image(this)
$('#base64').val(imgBaseStr)
}
}
// 将图片转 base64
function getBase64Image(img) {
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
console.log(img.width, img.height)
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();
var dataURL = canvas.toDataURL("image/" + ext);
// document.body.appendChild(canvas)
return dataURL;
}
function trans() {
var dom = $('#jpg')[0]
var str = getBase64Image(dom)
$('#base64').val(str)
}
function autoTrans() {
var val = $('#urlImg').val()
if (!val) {
alert('请先输入图片url')
return
}
let imgobj = new Image();
let imgBaseStr = undefined;
imgobj.setAttribute('crossOrigin', 'Anonymous'); //设置img对象允许跨域
imgobj.src = val
imgobj.onload = function () {
imgBaseStr = getBase64Image(this)
$('#base64').val(imgBaseStr)
}
}
function preview() {
var val = $('#base64').val()
if (!val) {
alert('请先生成base64格式编码')
return
}
let img = new Image();
img.src = val
var dom = document.createElement('div')
dom.appendChild(img)
document.body.appendChild(dom)
}

浙公网安备 33010602011771号