文件 或者 图片 与 base64 之间的转换

1. 字符串与base64互转


  // var base64 = window.btoa(window.encodeURIComponent(str)) // 简写:字符串转base64

    var str = '读取文件'

    //字符串转base64
    function encode(str) {
        // 对字符串进行编码
        var encode = encodeURI(str);
        // 对编码的字符串转化base64
        var base64 = btoa(encode);
        return base64;
    }
    var base64 = encode(str)
    console.log('格式', base64); // JUU4JUFGJUJCJUU1JThGJTk2JUU2JTk2JTg3JUU0JUJCJUI2

******************************************************************************************
    // base64转字符串
    function decode(base64) {
        // 对base64转编码
        var decode = atob(base64);
        // 编码转字符串
        var str = decodeURI(decode);
        return str;
    }

    var string = decode(base64)
    console.log(string); // 读取文件


2. base64与图片互转

原文链接:https://www.jianshu.com/p/90fc1f9042a8

js将图片转化为base64

<script>

    function getBase64Image(img) {
        var canvas = document.createElement("canvas"); // 创建canvas标签
        canvas.width = img.width;
        canvas.height = 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();
        console.log('ext', ext);  // jpg
        var dataURL = canvas.toDataURL("image/" + ext);
        return dataURL;
    }

	// sourceImgUrl 就是你的图片路径 
    var sourceImgUrl = "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3285976294,962780269&fm=26&gp=0.jpg";
    var image = new Image();
    image.setAttribute("crossOrigin", 'Anonymous');  // 图片跨域处理
    image.src = sourceImgUrl;
    image.onload = function () {
        var base64 = getBase64Image(image);
        console.log(base64);
    }

</script>

js将base64转化为图片格式

<body>
    <img alt="" id="img">
</body>

<script>
    var base64Img = 'data:image/png;base64,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'
    document.getElementById('img').setAttribute('src', base64Img)
</script>

3. 文件转base64的方法

3.1 拖拽文件

任意文件转base64-直接拖进来

原文链接:https://www.zhangxinxu.com/sp/base64.html

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="description" content="在线Base64生成转换小工具,可以实现任意文件转Base64 Data-URI编码,文件往页面中一拖即可。" />
    <meta name="keywords" content="base64, FileReader, readAsDataURL, 文件" />
    <meta name="author" content="谢勇彬,XYB" />
    <title>任意文件转base64-直接拖进来</title>
    <style>
        body {
            word-break: break-all;
            margin: 0 1em;
            min-height: 100vh;
            font-family: Consolas, "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", Monaco, "Courier New", monospace;
            overflow: hidden;
        }

        .empty::before {
            position: absolute;
            font-size: 50px;
            content: '任意文件\A拖到这里';
            white-space: pre;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            color: gray;
        }
    </style>
</head>

<body class="empty">
    <script>
        window.addEventListener("dragenter", function (event) { event.preventDefault(); }, false);
        window.addEventListener("dragover", function (event) { event.preventDefault(); }, false);

        window.addEventListener("drop", function (event) {
            var reader = new FileReader();
            reader.onload = function (e) {
                document.body.insertAdjacentHTML("afterBegin", '<p>' + e.target.result + '</p>');
                document.body.classList.remove('empty');
            };
            reader.readAsDataURL(event.dataTransfer.files[0]);
            event.preventDefault();
        }, false);
    </script>

3.2 选择文件 或者 图片

原文链接:https://www.cnblogs.com/webuserlast/p/4842498.html

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>简单的html5 File测试 for pic2base64</title>
    <style>
    </style>
    <script>
        window.onload = function () {
            var input = document.getElementById("fielinput");
            var txshow = document.getElementById("txshow");
            if (typeof (FileReader) === 'undefined') {
                result.innerHTML = "抱歉,你的浏览器不支持 FileReader,请使用现代浏览器操作!";
                input.setAttribute('disabled', 'disabled');
            } else {
                input.addEventListener('change', readFile, false);
                txshow.onclick = function () { input.click(); }
            }
        }
        function readFile() {
            var file = this.files[0];
            //判断是否是图片类型
            /*if (!/image\/\w+/.test(file.type)) {
                alert("只能选择图片");
                return false;
            }*/
            var reader = new FileReader();
            reader.readAsDataURL(file);
            reader.onload = function (e) {
                txshow.src = this.result;
                document.getElementById("data").innerText = this.result.substring(this.result.indexOf(',') + 1);
            }
        }
    </script>
</head>

<body>
    <input type="file" id="fielinput" />
    <img id="txshow" style="width:100px;height:100px;" />
    <br />解析之后的base64数据:<br />
    <p id="data"></p>
</body>

</html>
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值