首页 > 编程语言 >Java实现图片转base64字符串和图片互相转换

Java实现图片转base64字符串和图片互相转换

时间:2022-09-07 14:46:27浏览次数:73  
标签:return String base64 new Java 图片 out

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.io.*;

/**
 * @Description:
 * @Author: Han
 * @CreateDate: 2022/9/7 
 **/
public class Test010 {

    public static void main(String[] args) {
        String base64Str = imageToBase64Str("D:\\SoftWare\\图片素材\\头像\\432.jpeg");
        System.out.println(base64Str);

        boolean b = base64StrToImage(base64Str, "D:\\002.jpg");
        System.out.println(b);
    }

    /**
     * 图片转base64字符串
     *
     * @param imgFile 图片路径
     * @return
     */
    public static String imageToBase64Str(String imgFile) {
        InputStream inputStream = null;
        byte[] data = null;
        try {
            inputStream = new FileInputStream(imgFile);
            data = new byte[inputStream.available()];
            inputStream.read(data);
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 加密
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);
    }

    /**
     * base64编码字符串转换为图片,并写入文件
     *
     * @param imgStr base64编码字符串
     * @param path   图片路径
     * @return
     */
    public static boolean base64StrToImage(String imgStr, String path) {
        if (imgStr == null)
            return false;
        BASE64Decoder decoder = new BASE64Decoder();
        try {
            // 解密
            byte[] b = decoder.decodeBuffer(imgStr);
            // 处理数据
            for (int i = 0; i < b.length; ++i) {
                if (b[i] < 0) {
                    b[i] += 256;
                }
            }
            //文件夹不存在则自动创建
            File tempFile = new File(path);
            if (!tempFile.getParentFile().exists()) {
                tempFile.getParentFile().mkdirs();
            }
            OutputStream out = new FileOutputStream(tempFile);
            out.write(b);
            out.flush();
            out.close();
            return true;
        } catch (Exception e) {
            return false;
        }
    }

}

 参考文章:Java实现图片转base64字符串和图片互相转换 - 紫月java - 博客园 (cnblogs.com)

 在线图片转Base64 图片转 BASE64 编码 | 菜鸟工具 (runoob.com)

标签:return,String,base64,new,Java,图片,out
From: https://www.cnblogs.com/qq1445496485/p/16665365.html

相关文章

  • java产生一个随机数
    //随机产生8位数StringBuilderstr=newStringBuilder();//定义变长字符串Randomrandom=newRandom();//随机生成数字,并添加到字符串for(inti=0;i<8;i++){str.a......
  • JAVA 几种常见的 ENUM
    方法一:常量在JDK1.5之前,我们定义常量都是:publicstaticfianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法publicen......
  • java学习笔记20
    增强for循环JAVA5引入一种主要用于数组或集合的增强型for循环格式如下for(声明语句:表达式){//代码句子}publicclassForDemo05{  publicstaticvoidmain(Strin......
  • java8新特性:方法引用
    java8新特性:方法引用我们用Lambda表达式来实现匿名方法。但有些情况下,我们用Lambda表达式仅仅是调用一些已经存在的方法,除了调用动作外,没有其他任何多余的动作,在这种情况......
  • eWebEditor粘贴word图片且图片文件自动上传功能
    ​ 百度ueditor新增的将word内容导入到富文本编辑框的功能怎么没有啊,...ueditor实现word文档的导入和下载功能的方法:1、UEditor没有提供word的导入功能,只能说是粘贴复......
  • vfb导出excel里的图表为本地图片
    主要是为了做个记录。#includeOnce"Afx/AfxWin.inc"DimAsCObjectxl=CreateObject("Excel.Application")DimAsCObjectwkb=xl.Get("Workbooks")DimAsStri......
  • 下载微信文件图片音频视频并上传到OSS
    需求背景:企业微信的文件图片音频视频都需要在本系统,不能放微信存着框架:.NET6系统:Windows10,WindowsServer2016企业微信接口微信消息类型枚举类///<summary>......
  • Java Servlet 入门: 问题系列:警告: Web应用程序[ROOT]似乎启动了一个名为[Thread-1]的
    问题:在Java 代码中开了一个线程,死循环定时运行。右键运行项目,再右键停目项目: 发现系统有提示警告:警告:Web应用程序[ROOT]似乎启动了一个名为[Thread-1]的线程,但......
  • java map逆序遍历
    ListIterator<Map.Entry<Long,List<Long>>>li=newArrayList<>(relationsMap.entrySet()).listIterator(relationsMap.size());while(li.hasPrevio......
  • idea 查看类的字节码信息( jclassLib Bytecode viewer插件、javap tools)
    idea查看类的字节码信息第一种方式:IntelliJIDEA--Preferences---Plugins安装插件:jclassLibBytecodeviewer第二种方式:IntelliJIDEA--Preferenc......