java实现图片转base64字符串 java实现base64字符串转图片

Java实现图片转Base64字符串和Base64字符串转图片的过程可以分为两部分进行:

第一部分:图片转Base64字符串。

  1. 使用Java中的File类或者ImageIO类读取图片文件,并将其转化为BufferedImage对象,如下代码:
File file = new File("test.png");
BufferedImage image = ImageIO.read(file);
  1. 使用ByteArrayOutputStream类输出流将BufferedImage对象转为字节数组,并使用Base64类的getEncoder()方法进行编码,生成Base64字符串,如下代码:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);

byte[] bytes = baos.toByteArray();

String base64Str = Base64.getEncoder().encodeToString(bytes);

System.out.println(base64Str);

第二部分:Base64字符串转图片。

  1. 使用Base64类的getDecoder()方法将Base64字符串解码成字节数组,如下代码:
String base64Str = "iVBORw0KGgoAAAANSUhEUgAAAAUA\n..."

byte[] bytes = Base64.getDecoder().decode(base64Str);
  1. 使用ByteArrayInputStream类输入流将字节数组转为BufferedImage对象,如下代码:
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
BufferedImage image = ImageIO.read(bais);
  1. 使用ImageIO类将BufferedImage对象保存为目标格式的图片文件,如下代码:
File outputFile = new File("test2.png");
ImageIO.write(image, "png", outputFile);

示例说明:

示例1:将一张png格式的图片转为Base64字符串,并输出该字符串。

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.Base64;

import javax.imageio.ImageIO;

public class ImageToBase64 {

    public static void main(String[] args) throws IOException {
        // 读取图片文件
        File file = new File("test.png");
        BufferedImage image = ImageIO.read(file);

        // 转换为字节数组并编码生成Base64字符串
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write(image, "png", baos);
        byte[] bytes = baos.toByteArray();
        String base64Str = Base64.getEncoder().encodeToString(bytes);

        // 输出Base64字符串
        System.out.println(base64Str);
    }

}

示例2:将一个png格式的Base64字符串转为图片文件,保存到本地。

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.util.Base64;

import javax.imageio.ImageIO;

public class Base64ToImage {

    public static void main(String[] args) throws IOException {
        // 解码Base64字符串为字节数组
        String base64Str = "iVBORw0KGgoAAAANSUhEUgAAAAUA\n...";
        byte[] bytes = Base64.getDecoder().decode(base64Str);

        // 转为BufferedImage对象
        ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
        BufferedImage image = ImageIO.read(bais);

        // 保存为图片文件
        File outputFile = new File("test2.png");
        ImageIO.write(image, "png", outputFile);
    }

}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现图片转base64字符串 java实现base64字符串转图片 - Python技术站

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

相关文章

  • 一篇文章带你入门Java UML的类图

    下面我将为您详细讲解“一篇文章带你入门Java UML的类图”的完整攻略。 简介 Java UML是Java开发中必不可少的一部分,它可以帮助开发者对Java程序进行设计、开发和维护。其中类图是Java UML的重要组成部分。类图是一种描述类、接口、实现和它们之间关系的图形化方式。 步骤 下面我将向您介绍如何使用Java UML的类图进行Java编程: 1.…

    Java 2023年5月24日
    00
  • 详解springMVC—三种控制器controller

    以下是关于“详解Spring MVC—三种控制器Controller”的完整攻略,其中包含两个示例。 1. 前言 Spring MVC是一种常用的Java Web开发框架,它提供了一种灵活的方式来开发Web应用程序。在Spring MVC中,控制器是处理HTTP请求的核心组件。本攻略将详细讲解Spring MVC的三种控制器。 2. 控制器 在Spring …

    Java 2023年5月16日
    00
  • 你真的知道Java中对象的销毁吗

    当一个Java对象不再被程序使用时,它会被JVM自动回收,这个过程称为垃圾回收(Garbage Collection)。垃圾回收器会扫描堆中的所有对象,将未被引用的对象回收,腾出空间供其他对象使用。 Java 中对象的销毁与使用无关,取决于对象是否被垃圾回收器扫描到并回收,因此需要了解垃圾回收机制。 具体来说,Java 的垃圾回收器主要通过以下两个机制进行对…

    Java 2023年5月26日
    00
  • 5分钟快速了解String.trim()到底做了什么事

    当我们使用Java字符串时,我们可以使用trim()方法来去除字符串的首尾空格。 一、什么是String.trim()方法? String.trim()方法属于Java String类的一个方法,用于去除字符串的首尾空格。该方法返回一个新的字符串,而不是修改原始字符串。 二、String.trim()方法的使用 在Java编程中,我们可以使用String.t…

    Java 2023年5月20日
    00
  • java开发CPU流水线与指令乱序执行详解

    Java开发CPU流水线与指令乱序执行详解 一、流水线 CPU流水线可以看做是一个包含若干个处理单元的管道。每个处理单元都负责处理某一部分的指令。在流水线工作时,每个指令在依次经过不同的处理单元,每个处理单元都对指令做出部分处理,最终合起来完成指令的执行。由于每个处理单元都是独立的,它们可以并行处理不同的指令,这样就可以避免CPU空转,提高CPU的利用率。 …

    Java 2023年5月26日
    00
  • Spring Security+JWT简述(附源码)

    Spring Security是一个强大的安全框架,可以支持高度可定制的身份验证和授权功能。而JWT(JSON Web Token)则是一种轻量级的认证和授权技术,可以在分布式系统中传递和验证用户身份信息。本文将介绍如何结合Spring Security和JWT来实现基于token的身份验证和授权。 1. Spring Security和JWT简介 1.1 …

    Java 2023年5月20日
    00
  • 详解MyBatis多数据源配置(读写分离)

    下面是详细讲解“详解MyBatis多数据源配置(读写分离)”的完整攻略。 什么是MyBatis多数据源配置? MyBatis多数据源配置指的是在一个项目中同时使用多个数据源,本文重点讲解的是如何实现读写分离的多数据源配置。读写分离是指将数据库中读操作和写操作分别分配到不同的数据库实例上,以达到负载均衡和优化数据库性能的目的。MyBatis是一个优秀的数据持久…

    Java 2023年5月20日
    00
  • Java语言实现最大堆代码示例

    让我为您详细讲解“Java语言实现最大堆代码示例”的完整攻略。 最大堆简介 最大堆是一种满足父节点比子节点大的堆,它通常用于对数据进行排序和查找最大值。最大堆可以通过用数组表示、从根节点开始,每次比较左右子节点的大小,决定是否交换它们来实现。 Java实现最大堆代码示例 下面是Java实现最大堆代码的示例: public class MaxHeap { pr…

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