Java将byte[]转图片存储到本地的案例

 更新时间:2020年10月10日 15:45:48   作者:Curry_BB  
这篇文章主要介绍了Java将byte[]转图片存储到本地的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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;
    }
  }
}

以上这篇Java将byte[]转图片存储到本地的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java并发编程面试之线程池

    Java并发编程面试之线程池

    线程池和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 解决JavaMail附件名字过长导致的乱码问题

    解决JavaMail附件名字过长导致的乱码问题

    这篇文章主要介绍了解决JavaMail附件名字过长导致的乱码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Mybatis 将table表名作为参数传入操作

    Mybatis 将table表名作为参数传入操作

    这篇文章主要介绍了Mybatis 将table表名作为参数传入操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • java调用c程序通信示例代码

    java调用c程序通信示例代码

    这篇文章主要介绍了java调用c程序通信示例,大家参考使用吧
    2013-12-12
  • Java线程池运行状态监控实现解析

    Java线程池运行状态监控实现解析

    这篇文章主要介绍了Java线程池运行状态监控实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java中静态代码块、构造代码块、构造函数和普通代码块的区别

    Java中静态代码块、构造代码块、构造函数和普通代码块的区别

    在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序,需要的朋友可以参考下
    2023-05-05
  • Java Lombok简介、使用、工作原理、优缺点

    Java Lombok简介、使用、工作原理、优缺点

    这篇文章主要介绍了Java Lombok简介、使用、工作原理、优缺点的相关资料,帮助大家更好的理解和学习使用Java Lombok,感兴趣的朋友可以了解下
    2021-03-03
  • Mybatis返回单个实体或者返回List的实现

    Mybatis返回单个实体或者返回List的实现

    这篇文章主要介绍了Mybatis返回单个实体或者返回List的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • java之多线程抢火车票的实现示例

    java之多线程抢火车票的实现示例

    生活中有很多多线程的案例,购票就是一个很常见的问题,本文主要介绍了java之多线程抢火车票的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • 基于Java判断网络是否正常代码实例

    基于Java判断网络是否正常代码实例

    这篇文章主要介绍了基于Java判断网络是否正常代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03

最新评论