Java编程中base64图片与文件图片的相互转化工具

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(1589)   2023-03-28 11:29:14
1.依赖包,maven引入
        <!--Base64Encoder等工具类 -->
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.10</version>
		</dependency>
		<!--/Base64Encoder等工具类 -->
2.Java编程代码:
package com.leftso.common;

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.imageio.ImageIO;

import org.apache.commons.codec.binary.Base64;

/**
 * 图片与base64编码的互转工具
 * 
 * @author leftso
 *
 */
public class ImageBase64Util {

	public static void main(String[] args) {
		try {
			File image = new File("C:\\Users\\fghfghdf\\Desktop\\temp\\2.png");
			String imageStr = image2Base64(new FileInputStream(image));
			System.out.println(imageStr);
			File out = new File("C:\\Users\\fghfghdf\\Desktop\\temp\\3.png");
			base642Image(imageStr, new FileOutputStream(out));
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	/**
	 * 图片文件转换为base64编码的串
	 * 
	 * @param imageFileInputStream
	 *            图片文件输入流
	 * @return 编码后的base64串
	 * @throws IOException
	 *             可能出现IO异常
	 */
	public static String image2Base64(InputStream imageFileInputStream) throws IOException {
		byte[] data = new byte[imageFileInputStream.available()];
		imageFileInputStream.read(data);
		imageFileInputStream.close();
		Base64 base64 = new Base64();
		return base64.encodeAsString(data);
	}

	/**
	 * base64串转换为图片文件
	 * 
	 * @param base64Image
	 *            图片base64串
	 * @param outputStream
	 *            输出流
	 * @throws IOException
	 *             可能出现IO异常
	 */
	public static void base642Image(String base64Image, OutputStream outputStream) throws IOException {
		Base64 base64 = new Base64();
		// 解码
		byte[] imageArr = base64.decode(base64Image);
		InputStream sbs = new ByteArrayInputStream(imageArr);
		BufferedImage bufferImg = ImageIO.read(sbs);
		ImageIO.write(bufferImg, "PNG", outputStream);
	}

}

注意
前端传递过来的图片,一般会有一个前缀,如下
"data:image/jpeg;base64," 
解码之前去掉,否则错误。

 
地址:https://www.leftso.com/article/97.html

相关阅读

Java编程中处理图片文件与base64串的图片相互转化工具类,方便在编程中处理前端传递过来的base64图片。
Base64编码和解码_java8编程Base64编码和解码API使用
Java编程中,很多报表系统需要导出Excel文件,并且某些时候需要导出一定的图形统计,其实就是将图片放在Excel中,下面讲解Java如何实现Excel图片编辑插入
Map与Java bean之间的转换工具类,用于java.util.Map与普通javabean直接的相互转换,Java编程
Java编程float转换为String并保留n位小数
本文讲解什么是JWT,JWT的构成和JWT算法?,Java编程,JWT
java 图片 无损压缩。随着科技进步,大家手机拍的照片也从之前的几百KB变成几MB或者10MB了,有些情况我们需要压缩一下图片节省网络资源。这里将会讲解如何采用Java语音进行图片的无损压缩
Java生成密钥对采用hutool工具生KeyPair keyPair = SecureUtil.generateKeyPair("RSA"); PrivateKey aPrivate = k...
Java编程软件有哪些?常用Java编程软件下载、安装和使用说明
功能说明:1.指定图片大小缩放图片(reSize);2.指定图片的宽度,高度根据比例缩放(reSizeByWith);3.指定图片的高度,宽度根据比例缩放(reSizeByHeight);4.判...