当前位置: 首页 > news >正文

如何以Base64形式存储、返回图片数据

在Java中,可以使用Base64类来将图片转换为Base64编码。下面是一个示例代码:

Java代码直接处理:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Base64;
public class ImageToBase64 {public static void main(String[] args) {String imagePath = "image.jpg";String base64Image = convertImageToBase64(imagePath);System.out.println(base64Image);}public static String convertImageToBase64(String imagePath) {String base64Image = "";try (FileInputStream imageStream = new FileInputStream(new File(imagePath))) {byte[] imageBytes = new byte[imageStream.available()];imageStream.read(imageBytes);base64Image = Base64.getEncoder().encodeToString(imageBytes);} catch (IOException e) {e.printStackTrace();}return base64Image;}
}

后端处理前端传输过来的图片: 

import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.Base64;@RestController
public class ImageToBase64 {@GetMapping("/upload/file")public String convertImageToBase64(MultipartFile imageFile) {String base64Image = "";try {byte[] imageBytes = imageFile.getBytes();base64Image = Base64.getEncoder().encodeToString(imageBytes);} catch (IOException e) {e.printStackTrace();}return base64Image;}}

那么图片存储是转为Base64存储到数据库中好还是直接以图片形式存储到服务器中好?

其实这两种方案各有优缺点,具体取决于你的需求和场景。

存储为Base64编码的优点:

  1.  数据完整性:将图片转为Base64编码后,可以保证图片数据的完整性,不会因为服务器文件路径变更或图片文件删除而导致图片无法显示。
  2. 数据库便携性:图片以Base64编码形式存储在数据库中,可以方便地迁移、备份和分享数据,并且不依赖于特定的文件系统或服务器配置。
  3. 数据查询和管理:数据库中存储的Base64编码可以方便地进行查询、统计和管理。 存储为

存储为Base64编码的缺点:

  1. 存储空间:由于Base64编码会使图片数据膨胀约1.3倍,因此存储为Base64编码会占用更多的数据库存储空间。
  2. 传输效率:Base64编码的图片传输过程中会增加数据量,可能导致传输速度变慢。 直接以图片形式存储到服务器的优点:
  3. 存储空间:直接将图片存储到服务器中可以节省数据库的存储空间,因为只需存储图片的路径或文件名即可。

综上所述,如果你对存储空间充足,并且对数据完整性和数据库便携性要求较高,可以考虑将图片转为Base64编码存储到数据库中。如果对存储空间不太充足,且对传输效率和数据管理要求较高,可以直接以图片形式存储到服务器中。其实在项目中一般都是将图片存储到服务器上,并不会转为Base64存储,因为麻烦并且可读性很差,图片本身占用的空间就较大,在膨胀后占用更多存储空间也就没什么必要了。只是有时候我们在写项目时可能会有各种需求,这里提供多一个处理图片的解决思路。

http://www.lryc.cn/news/156191.html

相关文章:

  • 【大模型】自动化问答生成:使用GPT-3.5将文档转化为问答对
  • 普通平衡树 Splay
  • 复旦-华盛顿EMBA:走近亿咖通科技,探寻汽车智能化的科创“密码”
  • 学习心得07:C#
  • importlib的使用、9个视图子类、视图集、drf之路由、drf之请求响应回顾、GenericViewSet相关流程图
  • 国际站阿里云服务器远程桌面密码错误怎么办?苹果手机如何远程登录?
  • CRMEB多端多语言系统文件上传0Day代审历程
  • 孙哥Spring源码第18集
  • 【STM32】文件系统FATFS与Flash的初步使用
  • Android Glide in RecyclerView,only load visible item when page return,Kotlin
  • 【SCI征稿】3个月左右录用!计算机信息技术等领域均可,如机器学习、遥感技术、人工智能、物联网、人工神经网络、数据挖掘、图像处理
  • Golang 中的 crypto/ecdh 包详解
  • 系统学习live555
  • Linux下的系统编程——进程的执行与回收(八)
  • 第十九章 ObjectScript - 执行例程
  • Podman安装与使用
  • C++ 嵌套循环
  • 锁( ReentrantLock,Synchronized)
  • 主频计算-架构真题(二十三)
  • docker安装redis实操记录
  • MobaXterm 突破14个session限制
  • 使用Redisson实现高并发抢红包
  • 【网络编程】TCP/IP协议(互联网的基石)
  • 【VS Code插件开发】自定义侧边栏、视图(六)
  • lv3 嵌入式开发-8 linux shell脚本函数
  • 国际版阿里云腾讯云免费开户:服务器怎样转移
  • 区块链实验室(20) - FISCO控制台连接到指定的节点
  • 网络渗透day10-工具和技术
  • SSE 和 WebSocket 应用
  • mac帧 arp