首页 > 其他分享 >js中图片二进制和base64的互转

js中图片二进制和base64的互转

时间:2023-03-02 16:34:56浏览次数:40  
标签:function canvas img image base64 js var 互转

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>

    <body>
        <p>正常图片</p>
        <p></p>
        <img src="132.jpg" />
        <p></p>
        <p>base64</p>
        <p></p>
        <img src="" id="base64" alt="" />
        <p></p>
        <p></p>
        <p>base64转为二进制</p>
        <img src="" id="erjinz" alt="" />
    </body>
    <script src="jquery-2.1.0.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript">
        /**
         * 网络图像文件转Base64
         */
        function getBase64Image(img) {
            var canvas = document.createElement("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();
            var dataURL = canvas.toDataURL("image/" + ext);
            return dataURL;
        }

        /**
         *Base64字符串转二进制
         */
        function dataURLtoBlob(dataurl) {
            var arr = dataurl.split(','),
                mime = arr[0].match(/:(.*?);/)[1],
                bstr = atob(arr[1]),
                n = bstr.length,
                u8arr = new Uint8Array(n);
            while(n--) {
                u8arr[n] = bstr.charCodeAt(n);
            }
            return new Blob([u8arr], {
                type: mime
            });
        }

        //**blob to dataURL**
        function blobToDataURL(blob, callback) {
            var a = new FileReader();
            a.onload = function(e) {
                callback(e.target.result);
            }
            a.readAsDataURL(blob);
            return a;
        }
        var result;
        var img = "132.jpg";
        var image = new Image();
        image.src = img;
        image.onload = function() {
            //这样就获取到了文件的Base64字符串
            var base64 = getBase64Image(image);
            $("#base64").attr("src", base64);

            //Base64字符串转二进制
            var file = dataURLtoBlob(base64);

            //二进制转base64
            result = blobToDataURL(file, function(dataurl) {
                console.log(dataurl);
            });

            setTimeout(function() {
                $("#erjinz").attr("src", result.result);
            }, 100);
        }
    </script>
</html>

 

标签:function,canvas,img,image,base64,js,var,互转
From: https://www.cnblogs.com/Ma-YuHao/p/17172248.html

相关文章

  • 纯js实现图片无缝循环走马灯效果支持拖拽和惯性滑动
    要求实现一个无缝循环的图片滚动公告,支持上下,左右模式。要求1,不可有卡顿图片无缝轮播     2,手指拖拽暂停轮播,用户可左右(或上下)拖拽,快速滑动有惯性效果。 ......
  • JS 获取浏览器的宽和高
    网页可见区域宽:document.body.clientWidth网页可见区域高:document.body.clientHeight网页可见区域宽:document.body.offsetWidth(包括边线的宽)网页可见区域高:document.bod......
  • js返回上一页面
    一、history.back()和history.go(-1)history.back()和history.go(-1)都是返回之前页面,但是方法不同,所以是有区别的:history.back(-1) //直接返回当前页的上一页,数......
  • vue项目引用vue-pdf打包多出worker.js文件
    问题描述:项目要用到pdf预览功能,因为是vue项目就是直接导入了vue-pdf组件,但是在进行打包的时候在dist文件夹下面多个worker.js文件,导致项目部署后预览pdf直接报了404 方......
  • 视频直播源码,js实现节流和防抖
    视频直播源码,js实现节流和防抖防抖:就是指连续触发事件但是在设定的一段时间内中只执行最后后一次,例如:设定1000毫秒执行,当你触发事件了,他会1000毫秒后执行,但是在还剩500毫......
  • node.js 版本不对,
    1.在知道版本的情况下,用nvm切换一下对应的版本应该就没问题了。在运行前端程序的时候。经常会遇到node.js版本不对的情况。今天我也碰到了这个情况。经查询查,发现了一个no......
  • 洛谷P4051 [JSOI2007]字符加密 题解 后缀数组sa的应用
    题目链接:https://www.luogu.com.cn/problem/P4051题目大意:给定一个长度为\(n\)的字符串\(s\),每次将\(s\)的首字符取出放到末尾……这样能得到\(n\)个字符串。将......
  • 我们后端代码这样子设置虽然这样子返回的是字符串,但是json字符串也是字符串
    我们后端代码这样子设置虽然这样子返回的是字符串  但是json字符串也是字符串,后端如果想接收的话,直接百度下怎么接收json字符串就行   ......
  • Js 根据视频链接取该视频第一帧的图片,并返回Base64
    <!DOCTYPEhtml><html><head><title>GetVideoFrameExample</title></head><body><divid="result"></div><script>//获取视频第一帧的......
  • 腾讯视频js逆向过程
    今天很开心,讲一讲腾讯视频的js逆向过程,是过程,不是破解方法,也没有什么源代码,当然你可以看懂之后自己写出来。再顺便说下腾讯视频程序员的加密手段很狡猾。比爱奇艺不知道好多少。......