zoukankan      html  css  js  c++  java
  • Java 图片URL转Base64编码

    前言

    实现方式:通过图片URL获取二进制流,再对字节数组进行Base64编码转换


    具体实现

    • 实现类
    import sun.misc.BASE64Encoder;
    import java.io.ByteArrayOutputStream;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class Base64Util {
    
        /**
         * 图片URL转Base64编码
         * @param imgUrl 图片URL
         * @return Base64编码
         */
        public static String imageUrlToBase64(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 encode(outStream.toByteArray());
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if(is != null) {
                        is.close();
                    }
                    if(outStream != null) {
                        outStream.close();
                    }
                    if(httpUrl != null) {
                        httpUrl.disconnect();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    
            return null;
        }
    
        /**
         * 图片转字符串
         * @param image 图片Buffer
         * @return Base64编码
         */
        public static String encode(byte[] image){
            BASE64Encoder decoder = new BASE64Encoder();
            return replaceEnter(decoder.encode(image));
        }
    
        /**
         * 字符替换
         * @param str 字符串
         * @return 替换后的字符串
         */
        public static String replaceEnter(String str){
            String reg ="[
    -
    ]";
            Pattern p = Pattern.compile(reg);
            Matcher m = p.matcher(str);
            return m.replaceAll("");
        }
    
        public static void main(String[] args) {
            System.out.println(Base64Util.imageUrlToBase64("https://img-blog.csdnimg.cn/20210105221008901.png"));
        }
    
    }
    
    

    - End -
    梦想是咸鱼
    关注一下吧
    以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
    作者:Maggieq8324
    本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
  • 相关阅读:
    Linux ifconfig 命令
    linux sed命令就是这么简单
    让博客园博客自动生成章节目录索引
    linux中cat、more、less命令区别详解
    Linux yum源搭建及配置
    关于java中位运算的左移、右移、无符号右移
    一个老话题,short s=s+1的日常
    C语言移位运算符
    关于异或的一些东西和应用
    指针就算指向了常量也不能修改这个常量
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/15090232.html
Copyright © 2011-2022 走看看