欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 线上图片验证码性能优化base64编码

线上图片验证码性能优化base64编码

2025/3/10 15:27:25 来源:https://blog.csdn.net/weixin_38186812/article/details/146079108  浏览:    关键词:线上图片验证码性能优化base64编码

背景

项目中发现,img标签中写src,读取一个png图片,只有16kb,速度特别慢。图片是以https链接的方式请求的。

解决办法

将图片url链接转为base64编码格式,然后返回给前端,速度提升特别快。

定义:base64是一种基于64个可打印字符(A-Z、a-z、0-9、+、/)来表示二进制数据的表示方法,末尾用=做后缀。

原代码

byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(imageCode.getImage(), "jpeg", byteArrayOutputStream);
String fileName = UUID.randomUUID() + ".jpeg";ResponseEntity<String> upload = fileUploadAndDownLoadService.upload(byteArrayOutputStream.toByteArray(), fileName);
JSONObject body = new JSONObject(upload.getBody());
JSONObject data = new JSONObject(body.get("data"));TempFile tempFile = new TempFile();
tempFile.setFileName(fileName);
tempFile.setFileUrl(data.get("url").toString());tempFile.setFileType(fileName.substring(fileName.lastIndexOf(".") + 1));
tempFile.setDeleteStatus(0);
tempFile.setCreateTime(new Date());
tempFileMapper.insertSelective(tempFile);
return tempFile.getFileUrl();

优化后代码

byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(imageCode.getImage(), "jpeg", byteArrayOutputStream);// 获取图片的字节数组
byte[] imageBytes = byteArrayOutputStream.toByteArray();
// 将字节数组转换为 Base64 字符串
String base64Image = Base64.getEncoder().encodeToString(imageBytes);String fileName = UUID.randomUUID() + ".jpeg";
//ResponseEntity<String> upload = fileUploadAndDownLoadService.upload(byteArrayOutputStream.toByteArray(), fileName);
//JSONObject body = new JSONObject(upload.getBody());
//JSONObject data = new JSONObject(body.get("data"));TempFile tempFile = new TempFile();
tempFile.setFileName(fileName);
//tempFile.setFileUrl(data.get("url").toString());
tempFile.setFileUrl(fileName);tempFile.setFileType(fileName.substring(fileName.lastIndexOf(".") + 1));
tempFile.setDeleteStatus(0);
tempFile.setCreateTime(new Date());
tempFileMapper.insertSelective(tempFile);//return tempFile.getFileUrl();
return base64Image;

Base64 的应用场景包括:

常用于在 HTTP 协议中传输二进制数据。例如音乐文件里面保存一张封面图片,就是通过 base64 来进行保存。就是把一张图片或文件,变成一串字符串,这样就可以直接把这个字符串保存到数据库中,这种编码通常用于在网络中传输二进制数据,如图片或文件。

base64对于前端来说并不陌生,在性能优化方面,base64经常被用于小图片的转化,从而达到减少http请求,使得页面的性能变得越来越好。

优点

因为它可以避免数据在不同系统间传输时被误解或破坏;
同时无需借用一个空间进行存储,然后再通过地址获取到这个图片或者文件资源。

缺点

通过base64转化后,体积会大了 1/3 。
虽然Base64编码可以在一定程度上隐藏原始数据,但它并不提供任何加密功能。如果需要保护数据内容的安全,还需采用其他的加密技术。因为它的编码与解码过程是确定且公开的

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词