广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Base64字符串与图片的相互转换
  • 590
分享到

Base64字符串与图片的相互转换

javamybatis 2023-10-20 12:10:48 590人浏览 独家记忆
摘要

本篇博客记载的是一个我们在开发过程中很常用的一个小功能,就是我们在处理图片的时候做数据存放到数据库的功能,我们存放的不再是本地路径而是一个Base64的字符串! 然后我们在取值的时候又将Base64转换为一个图片文件的做法 简单的两个步骤:

本篇博客记载的是一个我们在开发过程中很常用的一个小功能,就是我们在处理图片的时候做数据存放到数据库的功能,我们存放的不再是本地路径而是一个Base64的字符串!

然后我们在取值的时候又将Base64转换为一个图片文件的做法

简单的两个步骤:

一、导入工具类:

Base64Util:

package com.ruoyi.system.controller;import java.io.ByteArrayOutputStream;import java.io.File; import java.io.IOException;import java.util.regex.Matcher;import java.util.regex.Pattern; import javax.imageio.stream.FileImageInputStream; import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder; public class Base64Util{        public static byte[] decode(String base64Str){        byte[] b = null;        BASE64Decoder decoder = new BASE64Decoder();        try {            b = decoder.decodeBuffer(replaceEnter(base64Str));        } catch (IOException e) {            e.printStackTrace();         }        return b;     }        public static String encode(byte[] image){        BASE64Encoder decoder = new BASE64Encoder();        return replaceEnter(decoder.encode(image));    }    public static String encode(String uri){        BASE64Encoder encoder = new BASE64Encoder();        return replaceEnter(encoder.encode(uri.getBytes()));    }         public static byte[] imageTobyte(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 (Exception e) {             e.printStackTrace();         }         return data;    }    public static String replaceEnter(String str){        String reg ="[\n-\r]";        Pattern p = Pattern.compile(reg);        Matcher m = p.matcher(str);        return m.replaceAll("");    } }

ImageUtils:

package com.ruoyi.system.controller;import java.awt.image.BufferedImage;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import javax.imageio.ImageIO;import javax.swing.ImageIcon;import java.awt.Graphics;import java.awt.GraphicsConfiguration;import java.awt.GraphicsDevice;import java.awt.GraphicsEnvironment;import java.awt.HeadlessException;import java.awt.Image;import java.awt.Toolkit;import java.awt.Transparency;import java.net.HttpURLConnection;import java.net.URL;public class ImageUtils {    public static String getBase64ByImgUrl(String url){        String suffix = url.substring(url.lastIndexOf(".") + 1);        try {            URL urls = new URL(url);            ByteArrayOutputStream  baos = new ByteArrayOutputStream();            Image image = Toolkit.getDefaultToolkit().getImage(urls);            BufferedImage  biOut = toBufferedImage(image);            ImageIO.write(biOut, suffix, baos);            String base64Str = Base64Util.encode(String.valueOf(baos.toByteArray()));            return base64Str;        } catch (Exception e) {            return "";        }    }    public static BufferedImage toBufferedImage(Image image) {        if (image instanceof BufferedImage) {            return (BufferedImage) image;        }        // This code ensures that all the pixels in the image are loaded        image = new ImageIcon(image).getImage();        BufferedImage bimage = null;        GraphicsEnvironment ge = GraphicsEnvironment                .getLocalGraphicsEnvironment();        try {            int transparency = Transparency.OPAQUE;            GraphicsDevice gs = ge.getDefaultScreenDevice();            GraphicsConfiguration GC = gs.getDefaultConfiguration();            bimage = gc.createCompatibleImage(image.getWidth(null),                    image.getHeight(null), transparency);        } catch (HeadlessException e) {            // The system does not have a screen        }        if (bimage == null) {            // Create a buffered image using the default color model            int type = BufferedImage.TYPE_INT_RGB;            bimage = new BufferedImage(image.getWidth(null),                    image.getHeight(null), type);        }        // Copy image to buffered image        Graphics g = bimage.createGraphics();        // Paint the image onto the buffered image        g.drawImage(image, 0, 0, null);        g.dispose();        return bimage;    }        public static String image2Base64(String imgUrl) {        URL url = null;        InputStream is = null;        ByteArrayOutputStream outStream = null;        HttpURLConnection httpUrl = null;        try{            url = new URL(imgUrl);            httpUrl = (HttpURLConnection) url.openConnection();            httpUrl.connect();            httpUrl.getInputStream();            is = httpUrl.getInputStream();            outStream = new ByteArrayOutputStream();            //创建一个Buffer字符串            byte[] buffer = new byte[1024];            //每次读取的字符串长度,如果为-1,代表全部读取完毕            int len = 0;            //使用一个输入流从buffer里把数据读取出来            while( (len=is.read(buffer)) != -1 ){                //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度                outStream.write(buffer, 0, len);            }            // 对字节数组Base64编码            return Base64Util.encode(outStream.toByteArray());        }catch (Exception e) {            e.printStackTrace();        }        finally{            if(is != null)            {                try {                    is.close();                } catch (IOException e) {                    e.printStackTrace();                }            }            if(outStream != null)            {                try {                    outStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }            if(httpUrl != null)            {                httpUrl.disconnect();            }        }        return imgUrl;    }}

二、使用方式:

使用方式非常简单就是调用ImageUtils方法中的方法即可:

例如:我们使用图片转换Base64就直接传入一张图片的路径即可:

来源地址:https://blog.csdn.net/weixin_66110079/article/details/127862404

--结束END--

本文标题: Base64字符串与图片的相互转换

本文链接: https://www.lsjlt.com/news/432987.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Base64字符串与图片的相互转换
    本篇博客记载的是一个我们在开发过程中很常用的一个小功能,就是我们在处理图片的时候做数据存放到数据库的功能,我们存放的不再是本地路径而是一个Base64的字符串! 然后我们在取值的时候又将Base64转换为一个图片文件的做法 简单的两个步骤:...
    99+
    2023-10-20
    java mybatis
  • Python 图片与字符串互转
    #coding:utf-8 # 引入base64库 import base64 # 把图片压缩成字符串 with open("c:\\test.jpg", "rb") as imageFile:     image2str = base...
    99+
    2023-01-31
    字符串 图片 Python
  • PYTHON时间与字符串的互相转换
    这篇文章主要讲解了“PYTHON时间与字符串的互相转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PYTHON时间与字符串的互相转换”吧!1、字符串转换成时间[in]from d...
    99+
    2023-06-02
  • 关于JAVA11中图片与BASE64相互转换的实现
    由于jdk 1.8 之后sun.misc 包下的 BASE64Decode的依赖 被移除 我们需要在自己的项目中引入EncodeUtils 工具类 帮助我们进行转换 public...
    99+
    2022-11-12
  • JAVA11中图片与BASE64相互转换的实现方法
    这篇文章主要介绍了JAVA11中图片与BASE64相互转换的实现方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。常用的java框架有哪些1.SpringMVC,Spring...
    99+
    2023-06-14
  • JS中base64和图片如何互相转换
    这篇文章将为大家详细讲解有关JS中base64和图片如何互相转换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。js将图片转化为base64var img&nbs...
    99+
    2022-10-19
  • php字符串与quoted-printable字符怎么相互转换
    这篇文章主要讲解了“php字符串与quoted-printable字符怎么相互转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php字符串与quoted-printable字符怎么相互转换...
    99+
    2023-06-20
  • java对象与Json字符串的相互转换
    文章目录 1.Json对象转换为java 对象 2. Java对象转换JSON 1.Json对象转换为java 对象 导入jackson的相关jar包 创建Jackson核心对象 ObjectMapper 调用ObjectMapper的相关...
    99+
    2023-10-23
    java json servlet
  • python 图片,字节的相互转换
    import base64 res = 'iVBORw0KGgoAAAANSUhEUgAAAJYAAAAyCAYAAAC+jCIaAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAD...
    99+
    2023-01-31
    字节 图片 python
  • Java中怎么将base64编码字符串转换为图片
    本篇内容介绍了“Java中怎么将base64编码字符串转换为图片”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!将base64编码字符串转换为...
    99+
    2023-07-05
  • Python 图片与pdf相互转换
    使用到第三方库 PyMuPDF 在 python 环境下对 PDF 文件的操作。 PDF 转为图片 需新建文件夹 pdf2png import fitz import glob def rightinput(desc): ...
    99+
    2023-01-31
    图片 Python pdf
  • Java中将base64编码字符串转换为图片的代码
    前一段时间,在做摄像头拍照上传,摄像头拍的照片为base64编码格式的字符串,需要上传至项目中,则需要使用到将base64编码字符串转换为图片 1、将base64编码字符串转换为图片...
    99+
    2023-03-19
    Java base64编码字符串转换为图片 Java base64转换图片 Java base64编码转换
  • Java项目中如何将图片与base64 编码相互转换
    这期内容当中小编将会给大家带来有关Java项目中如何将图片与base64 编码相互转换,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码:public static boolean&n...
    99+
    2023-05-31
    java base64 相互
  • SQL中日期与字符串怎么互相转换
    这篇文章主要讲解了“SQL中日期与字符串怎么互相转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL中日期与字符串怎么互相转换”吧!一.Oracle日期...
    99+
    2022-11-30
    sql
  • PHP中数组与字符串如何相互转换
    这篇文章主要为大家展示了“PHP中数组与字符串如何相互转换”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“PHP中数组与字符串如何相互转换”这篇文章吧。explode()函数-字符串转化为数组ex...
    99+
    2023-06-25
  • python3 字符串str和bytes相互转换
    目录1.相关基础2.str和bytes相互转换2.1 bytes->str2.2 str->bytes1.相关基础 python3中有两种字符串类型:str和bytes ...
    99+
    2022-11-13
  • C#字符串和Acsii码相互转换
    1,现在因为遇到一个读取pdf文件文本信息遇到乱么问题,才找到这个文本字符串的编码转换的实现方式来判断是否存在乱码(0>乱码>255): C# 字符转ASCII码,ASC...
    99+
    2023-02-06
    C#字符串和Acsii码转换 C#字符串转换Acsii码
  • 关于java数组与字符串相互转换的问题
    1.char数组(字符数组)->字符串 可以通过:使用String.copyValueOf(charArray)函数实现。   举例: char[] arr={'a','b...
    99+
    2022-11-12
  • SQL中日期与字符串互相转换操作实例
    目录一.oracle日期和字符串互相转换1.1 日期转字符串1.1.1 yyyy年mm月dd日hh24時mi分ss秒1.1.2 yyyy-mm-dd hh24:mi:ss1.1.3 yyyyfm-mm-dd hh24:m...
    99+
    2022-10-27
  • Python字符串str和json格式相互转换
    目录1. 通过json.loads进行转换2.json转str3. 通过eval前言: str转换为json格式,前提一定需要保证这个str的格式和json是一致的,即左边最外层是大...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作