Java将byte[]转图片存储到本地的案例
作者:Curry_BB 发布时间:2021-08-30 08:19:12
标签:@Slf4j注解,日志,输出
Java中,将字节数组转成图片的有很多种方式,今天在这里记录其中一种,方便以后查询,也可以提供给没有接触的童鞋做一个参考。
首先是将图片转成字节数组
import sun.misc.BASE64Encoder;
import java.io.*;
// 传入图片路径,获取图片
FileInputStream fis = new FileInputStream("/Users/curry/error.png");
BufferedInputStream bis = new BufferedInputStream(fis);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buff = new byte[1024];
int len = 0;
while ((len = fis.read(buff)) != -1) {
bos.write(buff, 0, len);
}
// 得到图片的字节数组
byte[] result = bos.toByteArray();
// 将数组转为字符串
BASE64Encoder encoder = new BASE64Encoder();
String str = encoder.encode(result).trim();
将数组转为图片
import sun.misc.BASE64Decoder;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
BASE64Decoder decoder = new BASE64Decoder();
byte[] imgbyte = decoder.decodeBuffer("刚刚将字节数组转成的字符串");
OutputStream os = new FileOutputStream("/Users/curry/text.png");
os.write(imgbyte, 0, imgbyte.length);
os.flush();
os.close();
补充知识:java将图片转化为base64和base64转化为图片编码并保存在本地
我就废话不多说了,大家还是直接看代码吧~
public class Base64Convert {
/**
* @Description: 图片转化成base64字符串
* @param: path
* @Return:
*/
public static String GetImageStr(String path)
{
//将图片文件转化为字节数组字符串,并对其进行Base64编码处理
//待处理的图片
String imgFile = path;
InputStream in = null;
byte[] data = null;
//读取图片字节数组
try
{
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
}
catch (IOException e)
{
e.printStackTrace();
}
//对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
//返回Base64编码过的字节数组字符串
return encoder.encode(data);
}
/**
* @Description: base64字符串转化成图片
* @param: imgStr
* @Return:
*/
public static boolean GenerateImage(String imgStr,String photoname)
{
//对字节数组字符串进行Base64解码并生成图片
//图像数据为空
if (imgStr == null)
return false;
BASE64Decoder decoder = new BASE64Decoder();
try
{
//Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for(int i=0;i<b.length;++i)
{
if(b[i]<0)
{
//调整异常数据
b[i]+=256;
}
}
//生成jpeg图片
String imagePath= Config.getUploadPhysicalPath();
//System.currentTimeMillis()
//新生成的图片
String imgFilePath = imagePath+photoname;
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
}
catch (Exception e)
{
return false;
}
}
}
来源:https://blog.csdn.net/Curry_BB/article/details/82659661


猜你喜欢
- 1.)添加引用 build.gradle 中添加配置 compile 'com.github.bumptech.glid
- Map集合Map集合存储的是键值对Map集合的实现类:HashTable、LinkedHashMap、HashMap、TreeMapHash
- 本文实例讲述了C#中WPF使用多线程调用窗体组件的方法。分享给大家供大家参考。具体如下:Thread thread=new Thread(n
- 下面我给各位朋友整理了一篇C# 获取图片文件扩展名的例子,这里方法都非常的简单,我们只用到了image.RawFormat.Guid就实现了
- 基本概念 * (Listener): * 用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处
- 遇到的问题!注:自定义CommentGenerator的都知道通过实现CommentGenerator接口的一些不足,毕竟只是实现了Comm
- 一、前置说明本节大纲使用lombok插件的好处如何安装lombok插件使用lombok提高开发效率二、使用lombok插件的好处我们在jav
- 问题使用Runtime调用python脚本一直没有结果,经排查是因为 cv2 的 import 问题java代码:python代码:在导入c
- mybatis if传入字符串数字踩坑前台页面内容,注意这里的类型为字符串类型的数字<li>  
- 本文介绍通过Java程序批量替换PDF中的指定文本内容。程序环境准备如下:程序使用环境如图,需要注意的是,本文使用了免费版的PDF jar工
- namespace ConsoleTest{ class Program  
- [LeetCode] 2. Add Two Numbers 两个数字相加You are given two non-empty&n
- 我们在想对一个可枚举的对象集合进行去重操作时,一般第一个想到的就是就是Linq的Distinct方法。先定义一个类,然后使用Distinct
- 本文主要介绍了Java实现雪花算法(snowflake),分享给大家,具体如下:简单描述最高位是符号位,始终为0,不可用。41位的时间序列,
- 实现原理: 长连接的维持,是要客户端程序,定时向服务端程序,发送一个
- 本文实例为大家分享了Android Studio实现简单计算器功能的具体代码,供大家参考,具体内容如下程序步骤:(1)在布局文件定义一些计算
- 本文实例为大家分享了android通过usb读取U盘的具体代码,供大家参考,具体内容如下1.关联 compile ‘com.github.m
- 1.先定义一个Java对象Person:public class Person{ String name; int age; int num
- 先上效果图源码 github.com/woshiwzy/Ca…实现原理:1.继承LinearLayout2.重写onL
- Redisson分布式锁之前的基于注解的锁有一种锁是基本redis的分布式锁,锁的实现我是基于redisson组件提供的RLock,这篇来看