java converttobase64_Java 工具箱 | 图片-Base64 互转

前言

最近真的被图片上传的功能给烦恼了。在web的项目中,我们经常会有上传图片的业务场景,最典型的是上传头像。为了解决头像上可以有如下的实现:

使用 multipart/form-data 上传用户信息和头像,也即是使用html里面的

。如 gitlab中修改用户信息的头像。

先将图片上传到图片服务,并获取图片连接,之后再用这个图片连接修改用户信息。

直接上传图片的Base64编码信息,作为图片的数据,后台再将编码转化为图片文件。

这里将讨论的是第三中实现方法的中的图片与Base64编码互转。

在网页中,会有如下两种处理图片的方式,一种是直接src="/avatar/avatar.jpg",另一种则是 src="https://img-blog.csdnimg.cn/2022010703580471583.jpeg"的方式。第二种方式就是前端将发给后台的内容,数据由[数据描述],[数据Base64]组成,[数据描述]将告知我们该图片的类别,可以从中分析出图片的拓展名,[数据Base64]为图片Base64编码之后的数据,为图片文件完整的数据。为了能够完整地回复图片的内容和拓展名,需要前端发送[数据描述],[数据Base64]到后台。该格式其实是Data URI Scheme,完整后面再做讲解。

Insert title here

Data URLs Image:

avatar.jpg

2Q==

从 [数据描述] 判断图片拓展名

具体实现

数据描述与拓展名的映射

这里利用两个map,分别记录数据描述映射到拓展名和拓展名映射到数据描述,从而方便数据描述和拓展名的获取。

import java.util.HashMap;

import java.util.Map;

import java.io.File;

public class ImageDataURISchemeMapper {

private static Map scheme2Extension = new HashMap();

private static Map extension2Scheme = new HashMap();

static {

initSchemeSupported();

}

public static String getScheme(String imageExtension) {

if (imageExtension == null || imageExtension.isEmpty()) {

return "";

}

String result = extension2Scheme.get(imageExtension.toLowerCase());

return result == null ? "" : result;

}

public static String getScheme(File image) {

if (image == null) {

return "";

}

String name = image.getName();

int lastPointIndex = name.lastIndexOf(".");

return lastPointIndex < 0 ? "" : getScheme(name.substring(lastPointIndex + 1));

}

public static String getExtension(String dataUrlScheme) {

return scheme2Extension.get(dataUrlScheme);

}

public static String getExtensionFromImageBase64(String imageBase64, String defaultExtension) {

int firstComma = imageBase64.indexOf(",");

if(firstComma < 0) {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值