Java 处理图片与base64 编码的相互转换的示例

下面是详细讲解“Java 处理图片与base64 编码的相互转换的示例”的完整攻略:

1. 处理图片转base64编码

1.1 第一步,读取图片文件

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.codec.binary.Base64;

public class ImgToBase64 {

  public static String getImageStr(String imgFilePath) {

    InputStream inputStream = null;
    byte[] buffer = null;
    try {
      File imgFile = new File(imgFilePath);
      inputStream = new FileInputStream(imgFile);
      buffer = new byte[inputStream.available()];
      inputStream.read(buffer);
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if (inputStream != null) {
        try {
          inputStream.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
    return Base64.encodeBase64String(buffer);
  }
}

1.2 第二步,调用getImageStr方法

public class ImgToBase64Test {

  public static void main(String[] args) {
    String imgFilePath = "test.jpg";
    String imgBase64Str = ImgToBase64.getImageStr(imgFilePath);
    System.out.println(imgBase64Str);
  }
}

2. 处理base64编码转图片

2.1 第一步,解码base64编码

import java.util.Base64;
import java.io.IOException;
import java.io.InputStream;

public class Base64ToImg {

  public static byte[] decodeBase64(String base64) {
    return Base64.getDecoder().decode(base64);
  }
}

2.2 第二步,写入图片文件

import java.io.FileOutputStream;
import java.io.IOException;

public class Base64ToImg {

  public static void generateImage(String imgFilePath, String imgBase64Str) {
    byte[] buffer = Base64ToImg.decodeBase64(imgBase64Str);
    FileOutputStream fos = null;

    try {
      fos = new FileOutputStream(imgFilePath);
      fos.write(buffer);
      fos.flush();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if (fos != null) {
        try {
          fos.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }
}

2.3 第三步,调用generateImage方法

public class Base64ToImgTest {

  public static void main(String[] args) {
    String imgFilePath = "test.jpg";
    String imgBase64Str = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD";
    Base64ToImg.generateImage(imgFilePath, imgBase64Str);
  }
}

这两个示例中,分别展示了如何将图片转换成base64编码以及如何将base64编码转换回图片。第一个示例中,通过读取图片文件并使用Apache Commons Codec将其转换为base64编码字符串。第二个示例中,首先使用Java的Base64类解码base64编码字符串,然后将解码后的二进制数据写入文件系统中。这些示例可以帮助您快速了解如何在Java中处理图像和base64编码之间的转换。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 处理图片与base64 编码的相互转换的示例 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 当 SQL Server(mssql-jdbc) 遇上 BigDecimal → 精度丢失,真坑!

    开心一刻   中午和哥们一起喝茶   哥们说道:晚上喝酒去啊   我:不去,我女朋友过生日   哥们瞪大眼睛看着我:你有病吧,充气的过什么生日   我生气到:有特么生产日期的好吧 需求背景   系统对接了外部系统,调用外部系统的接口需要付费,一个接口一次调用付费 0.03 元   同一个月内,同一个接口最高付费 25 元   统计每个月的付费情况   需求清…

    Java 2023年4月28日
    00
  • 详解java各种集合的线程安全

    详解java各种集合的线程安全 在多线程程序中,对于集合类的操作可能会涉及到多个线程同时读写,此时需要考虑线程安全的问题。Java提供了许多线程安全的集合类,本篇文章将详细讲述Java中各种集合的线程安全性问题,以及如何使用这些集合类来保证线程安全。 简介 Java中常用的集合类可以分为List、Set和Map三大类。其中,List表示有序的集合,元素可以重…

    Java 2023年5月18日
    00
  • 解决SpringSecurity 一直登录失败的问题

    对于SpringSecurity一直登录失败的问题,我们可以从以下几个方面来进行排查和解决。 1.检查用户名和密码是否正确 登录失败的常见原因之一是用户名和密码不正确。我们可以通过查看用户表或者日志来检查用户输入的用户名和密码是否与系统中保存的用户名和密码匹配。如果不匹配,则登录失败。另外,如果程序使用了加密算法对密码进行加密,我们还需要检查用户输入的密码是…

    Java 2023年5月20日
    00
  • Apache与Tomcat服务器整合的基本配置方法及概要说明

    下面是“Apache与Tomcat服务器整合的基本配置方法及概要说明”的完整攻略。 简介 Apache作为一款主流的Web服务器,Tomcat则是一个支持Servlet和JSP等Java Web技术的Web服务器。在一些需要处理网页动态请求的场合,将它们整合在一起可以达到更好的效果。本文将详细介绍如何将Apache中的请求转发到Tomcat,从而达到服务器整…

    Java 2023年5月19日
    00
  • 图文详解Java的反射机制

    图文详解Java的反射机制 什么是Java的反射机制 Java的反射机制指的是通过程序来访问、检测、修改已编译的代码中的信息。在运行时,Java程序可以获取类的信息、构造方法、方法、属性等。 反射机制的优点 使用Java的反射机制可以增强程序的灵活性、可扩展性和封装性。具体来说,反射机制可以提高代码的复用性,增加代码的动态性,并使程序的设计更加灵活和可扩展。…

    Java 2023年5月26日
    00
  • 利用Spring Data MongoDB持久化文档数据的方法教程

    当使用Spring Data MongoDB进行文档数据持久化时,首先需要创建一个实体类,该实体类中需要包含一些注释以告知Spring Data MongoDB如何将该实体类映射到MongoDB集合。 例如,考虑以下实体类: @Document(collection = "myCollection") public class MyEnt…

    Java 2023年5月20日
    00
  • Spring Data JPA踩坑记录(@id @GeneratedValue)

    请允许我简单的介绍一下Spring Data JPA以及相关注解。 Spring Data JPA是Spring Framework中一个比较常用且易用的持久层框架,它允许我们使用JPA进行数据库访问操作,简化了数据库操作的代码,在项目的开发中更加高效便捷的实现了基础的CRUD操作。 相关注解有两种,@Id用于标识某个属性为实体类的主键,而@Generate…

    Java 2023年5月20日
    00
  • Spring很常用的@Conditional注解的使用场景和源码解析

    Spring中@Conditional注解的使用场景和源码解析 1. 使用场景 通俗的说,@Conditional是一个条件注解,允许我们根据特定条件来控制是否创建一个Bean。因此, @Conditional这个注解的核心就是用来控制 Bean 的创建的。 在实际开发中,我们经常会碰到类似这样的场景:我们需要根据不同的条件来决定是否创建某一个 Bean。比…

    Java 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部