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
    本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
  • 相关阅读:
    网络时间校对
    OleVariant的本质
    GIT生成SSHKEY公钥放到服务器免密登录
    git 清除所有untracked file
    Linux命令 cat命令
    Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)
    Git提交(PUSH)时记住密码 不用每次都输入密码
    arcgis10 arcmap10插件监控打开和保存文档
    arcmap10插件必看网页
    arcgis分解每一个部分为一个对象
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/15090232.html
Copyright © 2011-2022 走看看