jedis获取redis中二进制图片转Base64方式

 更新时间:2021年07月15日 08:45:19   作者:清茶淡粥  
这篇文章主要介绍了jedis获取redis中二进制图片转Base64方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

jedis获取redis图片 转成Base64

jedis存对象

/** * 序列化 * * @param object * @return */ 
public static byte[] serialize(Object object) { 
    ObjectOutputStream oos = null; 
    ByteArrayOutputStream baos = null; 
    try { 
        baos = new ByteArrayOutputStream(); 
        oos = new ObjectOutputStream(baos); 
        oos.writeObject(object); 
        byte[] bytes = baos.toByteArray(); 
        return bytes; 
    } catch (Exception e) { 
        
    } return null; 
} 
/** * 反序列化 * * @param bytes * @return */ 
public static Object unserialize(byte[] bytes) {
    ByteArrayInputStream bais = null; 
    try { 
  ObjectInputStream inputStream;
        inputStream = new ObjectInputStream(new ByteArrayInputStream(bytes));
        Object obj = inputStream.readObject();
    } catch (Exception e) {
        
    } 
    return null;
}

jedis获取redis里面的图片 转成Base64

/**
  * 将字节转为对象
  */
 public Object byte2Object(byte[] bytes) {
        if (bytes == null || bytes.length == 0)
            return null;
        try {
            ObjectInputStream inputStream;
            inputStream = new ObjectInputStream(new ByteArrayInputStream(bytes));
            Object obj = inputStream.readObject();
            return obj;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }

获取Base64字符

String imgBase64Str = Base64Utill.getImgBase64Str(  
    (byte[])(byte2Object(jedis.get(key.getBytes())))  );

转Base64工具类

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.imageio.stream.FileImageInputStream;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Base64Utill {
 /** 
   * 
   * @Description 将字节转Base64文件
   * @param data 要转换的字节
   * @param fileType 文件类型
   * @return Base64字符串
   */
 public static String getImgBase64Str(byte[] data, String fileType) throws IOException {
     String fileContentBase64 = null;
     String base64Str = "data:" + fileType + ";base64,";
     String content = null;      
         //对字节数组Base64编码
         if (data == null || data.length == 0) {
             return null;
         }
         BASE64Encoder encoder = new BASE64Encoder();
         content = encoder.encode(data);
         if (content == null || "".equals(content)) {
             return null;
         }
         fileContentBase64 = base64Str + content;
     return fileContentBase64;
 }
 
 
 /** 
   * 
   * @Description 将字节转Base64
   * @param data 要转换的字节
   * @return Base64字符串
   */
 public static String getImgBase64Str(byte[] data) throws IOException {
     String fileContentBase64 = null;
     String content = null;      
         //对字节数组Base64编码
         if (data == null || data.length == 0) {
             return null;
         }
         BASE64Encoder encoder = new BASE64Encoder();
         content = encoder.encode(data);
         
         if (content == null || "".equals(content)) {
             return null;
         }
         fileContentBase64=content;
     return fileContentBase64;
 }
 
 /** 
   * 
   * @Description 将字节转Base64文件
   * @param file  要转换的文件
   * @param fileType 文件类型
   * @return Base64字符串
   */
 public static String getImgBase64Str(File file)  {
     String fileContentBase64 = null;
  
     String content = null;
     //将图片文件转化为字节数组字符串,并对其进行Base64编码处理
     InputStream in = null;
     //读取图片字节数组
     try {
         in = new FileInputStream(file);
         byte[] data =  new byte[in.available()];
         in.read(data);
         in.close();
         //对字节数组Base64编码
         if (data == null || data.length == 0) {
             return null;
         }
         BASE64Encoder encoder = new BASE64Encoder();
         content = encoder.encode(data);
         if (content == null || "".equals(content)) {
             return null;
         }
         return encoder.encode(data);
     } catch (IOException e) {
         e.printStackTrace();
     } finally {
         if (in != null) {
             try {
     in.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
         }
     }
     return fileContentBase64;
 }
 
 /** 
   * 
   * @Description 将字节转Base64文件
   * @param file  要转换的文件
   * @param fileType 文件类型
   * @return Base64字符串
   */
 public static String getImgBase64Str(File file, String fileType) throws IOException {
     String fileContentBase64 = null;
     String base64Str = "data:" + fileType + ";base64,";
     String content = null;
     //将图片文件转化为字节数组字符串,并对其进行Base64编码处理
     InputStream in = null;
     //读取图片字节数组
     try {
         in = new FileInputStream(file);
         byte[] data =  new byte[in.available()];
         in.read(data);
         in.close();
         //对字节数组Base64编码
         if (data == null || data.length == 0) {
             return null;
         }
         BASE64Encoder encoder = new BASE64Encoder();
         content = encoder.encode(data);
         if (content == null || "".equals(content)) {
             return null;
         }
         fileContentBase64 = base64Str + content;
     } catch (IOException e) {
         e.printStackTrace();
     } finally {
         if (in != null) {
             in.close();
         }
     }
     return fileContentBase64;
 }
 /** 
   * 
   * @Description base64转字节
   * @param base64Str 字符串 
   * @return byte[]  
   */
  public static byte[] base64String2Byte(String base64Str){  
         BASE64Decoder decoder = new BASE64Decoder();
         byte[] b = null;
          try {
              b = decoder.decodeBuffer(base64Str);
              for (int i = 0; i < b.length; ++i) {
                  if (b[i] < 0) {
                      b[i] += 256;
                  }
             }
         } catch (IOException e) {
             e.printStackTrace();
         }  
         return b;  
     }
  /**
      * 将图片转换成Base64编码
      * @param imgFile 待处理图片
      * @return
      */
    public static String getImgBase64Str(String imgFile) {
        // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
        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();
        }
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);
    }
  
    /**
      * 将图片转换成字节数组
      * @param imgFile 待处理图片
      * @return
      */
    public  byte[] image2byte(String path){
        byte[] data = null;
        FileImageInputStream input = null;
        try {
            input = new FileImageInputStream(new File(path));
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            byte[] buf = new byte[1024];
            int numBytesRead = 0;
            while ((numBytesRead = input.read(buf)) != -1) {
                output.write(buf, 0, numBytesRead);
            }
            data = output.toByteArray();
            output.close();
            input.close();
        }
        catch (FileNotFoundException ex1) {
            ex1.printStackTrace();
        }
        catch (IOException ex1) {
            ex1.printStackTrace();
        }
        return data;
    }
     
    /**
   * 对字节数组字符串进行Base64解码并生成图片
   * @param imgStr 图片数据
   * @param imgFilePath 保存图片全路径地址
   * @return
   */
    public static boolean generateImage(String imgStr, String imgFilePath) {
        //
        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;
                }
            }
            // 生成jpg图片
            OutputStream out = new FileOutputStream(imgFilePath);
            out.write(b);
            out.flush();
            out.close();
            return true;
        } catch (Exception e) {
            return false;
        }
     }
 }
b[i] += 256;
}
}
// 生成jpg图片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring中使用事务嵌套时需要警惕的问题分享

    Spring中使用事务嵌套时需要警惕的问题分享

    最近项目上有一个使用事务相对复杂的业务场景报错了。在绝大多数情况下,都是风平浪静,没有问题。其实内在暗流涌动,在有些异常情况下就会报错,这种偶然性的问题很有可能就会在暴露到生产上造成事故,那究竟是怎么回事呢?本文就来简单讲讲
    2023-04-04
  • Java面试为何阿里强制要求不在foreach里执行删除操作

    Java面试为何阿里强制要求不在foreach里执行删除操作

    那天,小二去阿里面试,面试官老王一上来就甩给了他一道面试题:为什么阿里的 Java 开发手册里会强制不要在 foreach 里进行元素的删除操作
    2021-11-11
  • Springboot 整合 Java DL4J 实现农产品质量检测系统(推荐)

    Springboot 整合 Java DL4J 实现农产品质量检测系统(推荐)

    本文详细介绍了系统的搭建过程,包括技术选型、数据处理、模型训练和评估等关键步骤,系统采用卷积神经网络,对水果成熟度和缺陷进行识别,有效解决了传统方法成本高、效率低的问题,有助于提升农产品检测的科技含量和自动化水平
    2024-10-10
  • IDEA 中创建Spring Data Jpa 项目的示例代码

    IDEA 中创建Spring Data Jpa 项目的示例代码

    这篇文章主要介绍了IDEA 中创建Spring Data Jpa 项目的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • java 压缩图片(只缩小体积,不更改图片尺寸)的示例

    java 压缩图片(只缩小体积,不更改图片尺寸)的示例

    这篇文章主要介绍了java 如何压缩图片体积,帮助大家更好的利用Java处理图片,应对特殊情况,感兴趣的朋友可以了解下
    2020-10-10
  • idea项目结构中不显示out文件夹的解决

    idea项目结构中不显示out文件夹的解决

    本文通过图片的方式详细解释操作步骤,使读者能够更直观更方便地理解和执行操作,同时,文章末尾祝福读者步步高升,一帆风顺,展现了作者的人情味和亲和力,整体来说,这是一篇简单易懂、实用性强的操作指南
    2024-10-10
  • JAVA面试题之缓存击穿、缓存穿透、缓存雪崩的三者区别

    JAVA面试题之缓存击穿、缓存穿透、缓存雪崩的三者区别

    当服务器QPS比较高,并且对数据的实时性要求不高时,往往会接入缓存以达到快速Response、降低数据库压力的作用,常用来做缓存的中间件如Redis等。本文主要介绍了JAVA面试时常考的缓存击穿、穿透、雪崩场景三者区别,有兴趣的小伙伴可以看一下
    2021-11-11
  • sun unsafe类功能及使用注意事项详解

    sun unsafe类功能及使用注意事项详解

    这篇文章主要为大家介绍了unsafe类的功能及在使用中需要注意的事项详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-01-01
  • JAVA时间存储类Period和Duration使用详解

    JAVA时间存储类Period和Duration使用详解

    这篇文章主要为大家介绍了JAVA时间存储类Period和Duration使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 新手初学Java面向对象

    新手初学Java面向对象

    这篇文章主要介绍了Java语言面向对象编程思想之类与对象实例详解,还是十分不错的,这里给大家分享下,需要的朋友可以参考,希望能帮到你
    2021-07-07

最新评论