【base64】JavaScript&uniapp 将图片转为base64并展示

这篇具有很好参考价值的文章主要介绍了【base64】JavaScript&uniapp 将图片转为base64并展示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Base64是一种用于编码二进制数据的方法,它将二进制数据转换为文本字符串。它的主要目的是在网络传输或存储过程中,通过将二进制数据转换为可打印字符的形式进行传输

JavaScript

压缩图片

<html>

<body>
    <script src="https://code.jquery.com/jquery-1.11.3.js"></script>
    <input id="file" type="file" accept="image/*"><br>
    压缩后的图片:<span id="sz"></span><br>
    <img id="pic">
    <script>
        var base64, base64_2, base64_3;
        // 选择图片
        $("#file").change(function () {
            var m_this = this;
            cutImageBase64(m_this, 900, 0.7);
        })

        function cutImageBase64(m_this, wid, quality) {
            var file = m_this.files[0];
            // 获取当前浏览器的URL对象
            var URL = window.URL || window.webkitURL;
            // 该方法会返回一个代表文件的Blob URL。Blob URL是一个特殊的URL,可以用来临时表示二进制数据(比如文件、图像等)
            var blob = URL.createObjectURL(file);

            var img = new Image();
            img.src = blob;
            img.onload = function () {
                var that = this;
                //生成比例
                var w = that.width,
                    h = that.height,
                    scale = w / h;
                w = wid || w;
                h = w / scale;
                //生成canvas
                var canvas = document.createElement('canvas');
                var ctx = canvas.getContext('2d');
                $(canvas).attr({
                    width: w,
                    height: h
                });
                // 将指定的图像绘制到Canvas上
                // 参数依次表示图像源、起始点的X坐标、起始点的Y坐标、绘制的宽度和高度
                ctx.drawImage(that, 0, 0, w, h);
                // 将Canvas上的图像转换为Base64编码的数据
                // 参数依次表示图像类型、图像质量
                base64 = canvas.toDataURL('image/jpeg', quality || 0.9);
                document.getElementById("pic").src = base64;
                document.getElementById("sz").innerHTML = parseInt(base64.length / 2014, 0) + "kb";


            };
        }
    </script>
</body>

</html>

【base64】JavaScript&uniapp 将图片转为base64并展示,Javascript与ES6~,html5 &amp;&amp; css3 &amp;&amp; 浏览器,uniapp全栈,javascript,开发语言,ecmascript【base64】JavaScript&uniapp 将图片转为base64并展示,Javascript与ES6~,html5 &amp;&amp; css3 &amp;&amp; 浏览器,uniapp全栈,javascript,开发语言,ecmascript

 图片大小从1.36MB到169kb

加密图片

上面的代码中,toDataURL产生的是图片的base64编码,Base64编码必须是完整且正确才能正常显示图片。而只需对此编码做小小修改,哪怕仅是改动一个字符,也会让图片无法正常显示

代码如下:

<html>

<body>
    <script src="https://code.jquery.com/jquery-1.11.3.js"></script>
    <input id="file" type="file" accept="image/*"><br>
    压缩后的图片:<span id="sz"></span><br>
    <img id="pic">
    <a onclick="jm()">点此解密并显示图片</a>
    <script>
        var base64, base64_2, base64_3;
        // 选择图片
        $("#file").change(function () {
            var m_this = this;
            cutImageBase64(m_this, 900, 0.7);
        })

        function jm() {
            var pass = prompt('请输入口令', '');
            if (pass != "123") {
                alert("口令错误。");
            }
            else {
                base64_2 = document.getElementById("pic").src.toString();
                //解密
                base64_3 = base64_2.substring(0, 26) + base64_2.substring(27, base64_2.length);
                document.getElementById("pic").src = base64_3;
                console.log(base64_3)
            }
        }

        function cutImageBase64(m_this, wid, quality) {
            var file = m_this.files[0];
            // 获取当前浏览器的URL对象
            var URL = window.URL || window.webkitURL;
            // 该方法会返回一个代表文件的Blob URL。Blob URL是一个特殊的URL,可以用来临时表示二进制数据(比如文件、图像等)
            var blob = URL.createObjectURL(file);

            var img = new Image();
            img.src = blob;
            img.onload = function () {
                var that = this;
                //生成比例
                var w = that.width,
                    h = that.height,
                    scale = w / h;
                w = wid || w;
                h = w / scale;
                //生成canvas
                var canvas = document.createElement('canvas');
                var ctx = canvas.getContext('2d');
                $(canvas).attr({
                    width: w,
                    height: h
                });
                // 将指定的图像绘制到Canvas上
                // 参数依次表示图像源、起始点的X坐标、起始点的Y坐标、绘制的宽度和高度
                ctx.drawImage(that, 0, 0, w, h);
                // 将Canvas上的图像转换为Base64编码的数据
                // 参数依次表示图像类型、图像质量
                base64 = canvas.toDataURL('image/jpeg', quality || 0.9);
                // document.getElementById("pic").src = base64;
                document.getElementById("pic").src = base64.substring(0, 26) + 'a' + base64.substring(26, base64.length);
                document.getElementById("sz").innerHTML = parseInt(base64.length / 2014, 0) + "kb";


            };
        }
    </script>
</body>

</html>

【base64】JavaScript&uniapp 将图片转为base64并展示,Javascript与ES6~,html5 &amp;&amp; css3 &amp;&amp; 浏览器,uniapp全栈,javascript,开发语言,ecmascript

 【base64】JavaScript&uniapp 将图片转为base64并展示,Javascript与ES6~,html5 &amp;&amp; css3 &amp;&amp; 浏览器,uniapp全栈,javascript,开发语言,ecmascript

虽然图片编码经过了加密,而且增加了口令保护,但是只要查看网页源码,就可以知道口令,这样完全没有起到加密的效果

js代码加密

JS加密、JS混淆 - JShaman:专业JS代码混淆加密平台

【base64】JavaScript&uniapp 将图片转为base64并展示,Javascript与ES6~,html5 &amp;&amp; css3 &amp;&amp; 浏览器,uniapp全栈,javascript,开发语言,ecmascript

直接将加密后的代码替换成以前的代码即可,如下:

【base64】JavaScript&uniapp 将图片转为base64并展示,Javascript与ES6~,html5 &amp;&amp; css3 &amp;&amp; 浏览器,uniapp全栈,javascript,开发语言,ecmascript

uniapp 

 效果图:

【base64】JavaScript&uniapp 将图片转为base64并展示,Javascript与ES6~,html5 &amp;&amp; css3 &amp;&amp; 浏览器,uniapp全栈,javascript,开发语言,ecmascript 编码:

<template>
	<view class="container">
		<button @click="chooseImage">选择图片</button>
		<image v-if="base64Image" :src="base64Image"></image>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				base64Image: ''
			};
		},
		methods: {
			chooseImage() {
				let _this = this
				uni.chooseImage({
					count: 1,
					success(res) {
						const tempFilePath = res.tempFilePaths[0];
						uni.getFileSystemManager().readFile({
							filePath: tempFilePath,
							encoding: "base64",
							success(data) {
								console.log("图片的Base64数据:", data.data);
								_this.base64Image = "data:image/jpeg;base64," + data.data;
							},
							fail(error) {
								console.log("读取文件失败:", error);
							}
						});
					},
					fail(error) {
						console.log("选择图片失败:", error);
					}
				});
			}
		}
	}
</script>

<style>
	.container {
		margin: 20px;
	}
</style>

注解:

_this.base64Image = "data:image/jpeg;base64," + data.data表示什么?

this.base64Image是一个用于在视图中展示图片的数据绑定。通过给this.base64Image赋值一个以"data:image/jpeg;base64,"开头的字符串,然后将Base64编码的图片数据拼接在后面,就可以将这个Base64格式的图片数据作为URL来展示在页面上

uni.chooseImage?

从本地相册选择图片或使用相机拍照

文档:uni.chooseImage(OBJECT) | uni-app官网

uni.getFileSystemManager().readFile({})?

使用uni-app中FileSystemManager的readFile方法读取文件

文档:uni.getFileSystemManager() | uni-app官网

filePath(必填):要读取的文件路径,可以是相对路径或绝对路径。

encoding(可选):文件的编码格式,默认值为 'utf8'。如果需要将文件内容转换为 Base64 格式,则需要将该值设置为 'base64'。

success(可选):文件读取成功后的回调函数,接收一个参数表示读取到的文件数据。

fail(可选):文件读取失败时的回调函数,接收一个参数表示错误信息。文章来源地址https://www.toymoban.com/news/detail-680596.html

到了这里,关于【base64】JavaScript&uniapp 将图片转为base64并展示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elementui图片上传转为base64字符串

    场景:后端需要将上传的图片文件作为base64字符串的方式传参给他。 html代码 js代码

    2024年02月09日
    浏览(40)
  • Java读取外链图片忽略ssl验证转为base64

            最近在对接外部接口时遇到返回的图片所在的服务器全都没有ssl证书,导致在前端直接用img标签展示时图片开裂。于是转为通过后端获取,绕过ssl验证之后转为base64返回。记录一下代码段。

    2024年02月15日
    浏览(27)
  • uni-app 调用相机或相册图片并转为base64格式上传图片

    1、调用相机或相册上传图片 2、图片文件转base64 (1)下载插件 (2)页面引入插件 3、image-tools/index.js源码

    2024年02月11日
    浏览(36)
  • java使用hutool把服务器图片链接转为base64编码

    需求是把服务器的图片链接或者网上的图片链接地址转为base64位编码方便前端操作 base64编码转为图片在线网址 https://imgtobase64.d777.com/ 1.1 引入依赖 1.2 代码

    2024年02月12日
    浏览(35)
  • uni-app小程序-将后台返回的base64码转为图片时,图片没有显示出来

    在用uni-app开发小程序时,遇到一个问题:后台返回一长串码,前端这边需要将base64码进行转化为图片 2.1.获取后台返回的base64码 2.2.在页面需要的地方进行赋值: tips:在data中 定义imgurl 变量 ,记得把 .replace(/[rn]/g,\\\'\\\') 这句代码添加上,因为后台返回的会有换行空格之类的,

    2024年02月09日
    浏览(30)
  • 前端 img图片如何 展示 base64 格式(并且下载到本地)

    如题:最近在做项目发现页面上有些图片是动态获取的,也就是后台给我们返回图片的存放地址,一般都是放在服务器上的某个位置,我们直接拿到渲染一下就行了,(前提是不存在跨域问题), 但是由于项目特殊性,后台使用了Python 渲染出来的图片是svg格式的图片,并且

    2024年02月09日
    浏览(42)
  • [译]JavaScript中Base64编码字符串的细节

    本文作者为 360 奇舞团前端开发工程师 本文为翻译 原文标题:The nuances of base64 encoding strings in JavaScript 原文作者:Matt Joseph 原文链接:https://web.dev/articles/base64-encoding   Base64编码和解码是一种常见的将二进制内容转换为适合Web的文本的形式。它通常用于data URLs,比如内嵌图片

    2024年02月05日
    浏览(38)
  • 将图片转换成Base64格式存入数据库以及在前端页面展示

    这个示例接口假设已经有了一个数据库连接池,并且已经注入或初始化了数据源。这个接口的功能是读取指定路径的图片文件,将其转换为Base64编码字符串,然后将其存入数据库中。可以通过调用 saveImageToDB 方法来实现这个功能。调用该方法时需要传入要存储的图片文件的路

    2024年02月16日
    浏览(37)
  • 微信小程序选择本地图片、视频的最新方法chooseMedia,转为为base64上传到后端接口

    微信的api变动还是挺大的,之前选择图片的api wx.chooseImage 已被弃用,改为了 wx.chooseMedia ,本篇将介绍如何使用最新方法 wx.chooseMedia 进行选择图片上传并回显,以及转为为base64上传到后端接口 wxml wxss js 上传成功后,会返回一个数组,里面有图片的 本地临时路径 效果图: 有

    2023年04月20日
    浏览(42)
  • uniapp 微信小程序base64流转图片

    因为这次后端返回的图片并不是一个http地址,百度找了很久,在此记录 1,新建一个js文件 2.在vue文件中引入 import { base64ToPath} from \\\'./base64src.js\\\' let result = 后端返回的base64流.replace(/[rn]/g, \\\"\\\"); let pdfBase64 = `data:application/pdf;base64,${result}`;

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包