Java 图片URL转Base64编码

Java 图片URL转Base64编码前言实现方式:通过图片URL获取二进制流,再对字节数组进行Base64编码转换具体实现实现类importsun.misc.BASE64Encoder;importjava.io.ByteArrayOutputStream;importjava.io.InputStream;importjava.net.HttpURLConnection;importjava.net.URL;importjava.util.regex.Matcher;importjava.util.r

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

实现方式:通过图片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 ="[\n-\r]";
        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 –











梦想是咸鱼


关注一下吧

Java 图片URL转Base64编码
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193716.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • datagrip 2022.01激活码(注册激活)2022.02.12

    (datagrip 2022.01激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月1日
    2.8K
  • ItemDataBound里绑定数据

    ItemDataBound里绑定数据ItemDataBound里绑定数据DataRowViewdrv=(DataRowView)e.Item.DataItem;intUid=(int)drv[“UserID”];DataBinder.Eval(e.Item,”DataItem.PKIndex”);转载于:https://www.cnblogs.com/geoff/archive/2007/02/27/65…

    2022年10月8日
    0
  • Windows Server AppFabric Caching

    Windows Server AppFabric CachingWindowsServerAppFabric扩展了WindowsServer的Web应用程序和中间件的托管,管理和缓存功能。AppFabric缓存给WindowsServer带来了一个分布式的,内存中的对象缓存特性,使得扩展高性能的.NET应用,尤其是ASP.NET应用更加方便了。AppFabric的缓存机制为构建高性能的ASP.NET应用提供了很好的解决方案。

    2022年10月16日
    0
  • OSI模型「建议收藏」

    OSI模型「建议收藏」定义开放式系统互联通信参考模型(OpenSystemInterconnectionReferenceModel,缩写为OSI),简称为OSI模型。该模型是由ISO(国际标准化组织)定义,是个灵活稳健和可互操作的模型。目的规范不同系统的互联标准,使两个不同的系统能够较容易通信,而不需要改变底层的硬件和软件的逻辑。优点每层功能简单单一,标准化允许各种类型的网络硬件和软件相互通信…

    2022年10月23日
    0
  • hdparm

    “hdparm”(即硬盘参数)是Linux的命令行程序之一,用于处理磁盘设备和硬盘。借助此命令,您可以获得有关硬盘,更改写入间隔,声学管理和DMA设置的统计信息。它还可以设置与驱动器…

    2022年4月4日
    47
  • easyboot的一个严重不足[通俗易懂]

    easyboot的一个严重不足[通俗易懂]国产的好软件工具不多,easyboot就是其中一个,凡事贵在持之以恒,easyboot能坚持下来,并且功能越来越多,越来越强,实在可嘉.但我在使用easyboot中遭遇一个严重的不足,那就是easyboot不支持长文件路径,easyboot好象最大只支持到128个字符,而windows是可以支持255个字符的,在使用easyboot制做xpsp3pe过程中,esaybo

    2022年7月15日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号