如何以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存储,因为麻烦并且可读性很差,图片本身占用的空间就较大,在膨胀后占用更多存储空间也就没什么必要了。只是有时候我们在写项目时可能会有各种需求,这里提供多一个处理图片的解决思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值