分享一个比较好用的图片url转base64工具类

url转码,base64等好用转码小工具 附件内为转码工具,包含url转码,unicode 转码等类型,解压密码1024,如果可以的话麻烦给出使用意见幺, 立即下载

经过本人多次实践,得到以下图片URL转base64工具类。本着学习交流的态度,分享给大家。如有帮助,请点赞收藏,谢谢。

import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;


import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

import org.apache.http.ssl.SSLContextBuilder;

import sun.misc.BASE64Encoder;

import javax.imageio.IIOException;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageInputStream;
import javax.net.ssl.SSLContext;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.KeyManagementException;

import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;

@Slf4j
public class ImageUtil {

    private ImageUtil() {}
	
	//第一种:常规的方法转化图片稳定,一般不会出现变色等问题,但是此方法不支持https链接
    private static byte[] read2Array(URL url) throws IOException {
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setConnectTimeout(5 * 1000);
        try (
                InputStream inStream = conn.getInputStream();
                ByteArrayOutputStream outStream = new ByteArrayOutputStream()
        ) {
            byte[] buffer = new byte[2 * 1024];
            int len;
            while ((len = inStream.read(buffer)) != -1) {
                outStream.write(buffer, 0, len);
            }
            return outStream.toByteArray();
        } catch (IOException e) {
            log.error(e.getMessage(),e);
            throw new RuntimeException("图片转化失败");
        }
    }
	
	//第二种:网上比较常见的是这一种,但其实与第一种差异不大,只是重画了图片
    private static byte[] url2Array2(String url) throws Exception {
        try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
            ImageIcon bufImg = new ImageIcon(new URL(url));
            BufferedImage biOut = new BufferedImage(bufImg.getIconWidth(), bufImg.getIconHeight(), BufferedImage.TYPE_INT_RGB);
            Graphics2D graphics = (Graphics2D) biOut.getGraphics();
            graphics.drawImage(bufImg.getImage(), 0, 0, null);
            graphics.dispose();
            ImageIO.write(biOut, "jpeg", baos);
            return baos.toByteArray();
        }catch (Exception  e){
            log.error("图片转化失败:"+e.getMessage(),e);
            throw new IOException(e.getMessage());
        }
    }
    private static BufferedImage read(URL url) throws IOException {
        if (url == null) {
            throw new IllegalArgumentException("URL is NULL");
        }
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setInstanceFollowRedirects(true);
        connection.setReadTimeout(5000);
        InputStream inStream;
        try {
            inStream = connection.getInputStream();
        } catch (IOException e) {
            throw new IIOException("Can't get input stream from URL!", e);
        }
        ImageInputStream stream = ImageIO.createImageInputStream(inStream);
        BufferedImage bi;
        try {
            bi = ImageIO.read(stream);
            if (bi == null) {
                stream.close();
            }
        } finally {
            inStream.close();
            connection.disconnect();
        }
        return bi;
    }

	//第三种:特点是支持https,当然其实http也可以用
    private static byte[] url2Array3(String url) throws Exception {
        try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
            HttpGet httpGet=new HttpGet(url);
            CloseableHttpClient httpClient = HttpsClient.getInstance();
            CloseableHttpResponse resp = httpClient.execute(httpGet);
            resp.getEntity().writeTo(baos);
            return baos.toByteArray();
        }catch (Exception  e){
            log.error("图片转化失败:"+e.getMessage(),e);
            throw new IOException(e.getMessage());
        }
    }
	//支持https,此方法可以绕过https验证
    private static class HttpsClient {
        private static CloseableHttpClient getInstance() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
            SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, (chain, authType) -> true).build();
            SSLConnectionSocketFactory factory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
            return HttpClients.custom().setSSLSocketFactory(factory).build();
        }
    }


	//暴露给外部的静态方法,不带前缀
    public static String urlToBase64(String url) throws Exception {
        byte[] bytes;
        try {
            if(url.startsWith("https")) {
                bytes = url2Array3(url);
            }else {
                bytes = read2Array(new URL(url));
            }
        } catch (Exception e) {
            log.info("默认图片转化方法异常,尝试备份方法");
            bytes=url2Array2(url);
        }
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encodeBuffer(bytes).trim().replaceAll("\n", "").replaceAll("\r", "");
    }
	

	//暴露给外部的静态方法,带前缀
    public static String urlToFullBase64(String url) throws Exception {
        return "data:image/jpeg;base64," + urlToBase64(url);
    }
	//调用示例
    public static void main(String[] args) throws Exception {
        log.info(urlToFullBase64("http://122.51.21.35:9999/store/image/20201026/ab9f6aaab0a84d479a12e70dda1bcb08.jpg"));
    }

}
图片url和base64位相互转换 图片url转base64位,base64位的数据转换成图片,附带工具类 立即下载

相关推荐

全自动多功能编码转换工具(URL,ASCII,Base64,MD5)

可以还原URL,ASCII,Base64,MD5的编码,是一款很实用的小工具,来源于网络

url字符串转图片base64格式工具方法

url字符串转图片base64格式工具方法

wm20000的博客 1826

url网址直接生成完整图片

url网址直接生成完整图片,不论网页多宽多长都可以生成完整的图片,速度快,体积小,无需安装,下载即可使用!

url转base64(富文本编辑器)

url转base64

weixin_42666092的博客 772

HTML5图片dataURL转换工具.zip

HTML5图片dataURL转换工具,可将图片转成dataURL,或者将dataURL转回图片。使用html5 filereader方法,挺实用的工具,收藏放电脑,以后不用再找在线工具了。

YOLOv5实战:无人机巡检图片差异对比与违建标记(附完整代码)

本文详细介绍了如何利用YOLOv5目标检测技术实现无人机巡检图片差异对比与违建标记。通过图像对齐、目标检测、差异分析和可视化标记四个步骤,构建高效的违建识别系统,显著提升城市管理效率。文章包含完整代码实现和性能优化技巧,为计算机视觉在无人机巡检中的应用提供实用指南。

weixin_42535720的博客 283

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.r

Maggieq8324的博客 1万+

processing与arduino互动编程

Arduino开发板对AVR单片机二次编译封装,无需考虑单片机编程寄存器、地址指针等复杂细节processing借助arduino读取各种传感器的数值,控制各种机电装置。

weixin_45679408的博客 824

对于根据图片url的转base64,下载图片的工具类

import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.Outpu...

影落离风 2149

java 对接工行聚富通H5聚合支付接口

java 对接工行聚富通H5聚合支付接口

lgl的博客 860

OpenIddict实战:5步搞定.NET Core应用的OIDC单点登录集成

本文详细介绍了如何使用OpenIddict在.NET Core应用中快速实现OIDC单点登录集成。通过五个关键步骤,包括环境准备、数据库集成、客户端注册、令牌配置和多应用SSO集成,帮助开发者高效构建安全的企业级单点登录解决方案。

lambda的博客 728

将图片url转为base64的方法

通常我们会使用canvas提供的toDataURL方法。如何把后端传给前端的图片的url转为base64。

Csdn_____c的博客 8800

从智能手机到汽车电子:聊聊IPC-9702/9704A标准如何帮我们搞定不同场景下的PCB可靠性设计

本文探讨了IPC-9702/9704A标准在智能手机和汽车电子等不同场景下的PCB可靠性设计应用。通过分析消费电子、汽车电子和工业设备中的应力特征,详细解读了IPC标准在应变识别和测试方法论中的核心价值,并提供了具体的轻量化设计策略和全生命周期验证方案,帮助工程师提升PCB的长期可靠性。

weixin_30693683的博客 280

base64 , blob,url图片的处理方式

转自你知道前端对图片的处理方式吗? 前言 作为前端工程师 de 我们,日常少不了会跟图片打交道。在各大电商平台工作的前端工程师们,感受可能会更加的明显。 以下是我之前跟图片打交道踩到的坑,跟大家分享一下经验。 一、情景再现 用 Postman 请求接口的时候,返回的是这个图片(二进制) 在 chrome 的 network 查看的时候,返回的也是这个图片(二进制) 可是,在 debug 打印的...

weixin_33695450的博客 1530

数理统计四大分布---正态分布、卡方分布、学生t分布和F分布

在统计学上,我们会遇到一些常见的分布,除了正态分布外,,如t检验对应的t分布,检验对应的分布,方差分析对应的F分布等。这些分布是统计学的基础,在假设检验、方差分析等领域都起着至关重要的作用。在此,我们对这四种分布做详细的介绍,并附上MATLAB代码。 四种分布的讲解摘自MATLAB 2016的统计学和机器学习工具箱,有兴趣的可以去查看英文原版。 另外,为了方便,上传文档为图片格式,可能有些模糊...

suncangan的博客 5万+

国产麒麟V10系统命令大全,100个实用命令助你玩转系统!

国产麒麟V10系统命令大全,100个实用命令助你玩转系统!

网络技术联盟站 1914

5分钟搞定BASE64转图片原型开发

用最基础的HTML+JavaScript实现了一个极简页面:一个文本输入框用来粘贴BASE64数据,一个图片展示区域,外加下载按钮。最惊喜的是部署功能,点击一个按钮就能把原型发布到线上,马上分享给同事测试。这种快速验证想法的方式,比传统开发流程节省了至少80%的时间。这里特别注意了错误处理,比如当用户输入无效数据时,会显示友好的提示而不是直接报错。最近在做一个需要上传图片的功能时,遇到了一个需求:用户可能会直接提供BASE64编码的图片数据,而不是传统的文件上传。为了快速验证这个功能的可行性,我决定用。

JetRaven12的博客 796

2025年下半年网络规划设计师综合知识真题及答案解析

1983年,ARPANet完成技术转型,对此后的 Internet发展全关重要,这一转型是指( ) A.电路交换转向分组交换 B.商业化转型 C.民用化转型 D.从 NCP 协议转向 TCP/IP 答案:D 解析:ARPANet 最初使用 NCP (Network Control Protocol)协议进行主机问通信。1983年1月1日,ARPANet 正式切换到TCP/IP 协议族,为后续Internet的发展奠定了统一协议基础。

鹿鸣天涯 945

Base64工具类及2点坑

最近公司做疫情通行这块,设备要求图片传base64字符串,就分享下这个工具类,以及里面的一些坑吧,直接上码。 package com.xiaotian.bus.util; import com.easylinkin.bm.thirdapi.request.upload.UploadRequest; import com.easylinkin.bm.thirdapi.response.R...

zwrlj527的专栏 956

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

经验分享:C#上传图片转Base64字节存库并支持转换文件提供url读取

工作中经常需要用到图片上传功能,传统的存服务器目录方式在服务器迁移、部署和各种平台交互时操作不太方便,而图片资源存数据库是相对比较方便维护的方式了!以下贴出用C#存储和读取图片资源的一些方法: /* ---------------------------------------------------------------------------- * 上传图片类 * 先读取图片资源转换成

Cien 4045

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

nodejs 图片base64处理

一、base64转图片 var app = require('express')(); app.post('/upload', function(req, res){ //接收前台POST过来的base64 var imgData = req.body.imgData; //过滤data:URL var base64Data = imgData.replace(/^...

weixin_30701575的博客 955

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

微信小程序中的图像奥秘:图片与Base64的华丽变身记

性能与优化:如何在大量图片处理中平衡性能与用户体验?安全实践:你有哪些安全策略来保护Base64编码图片数据?未来趋势:图片处理技术发展,如WebP技术在小程序中的应用前景?通过本文,希望你已掌握微信小程序中图片与Base64转换的技巧,无论是提升用户体验,还是优化性能,都游刃有余地。欢迎在评论区分享你的见解和实战经验,一起探讨图像处理的更多可能。💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1689

Thinkphp 5 Base64 转图片并存储

private function saveBase64($base64_image_content){ if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){ //图片后缀 $type = $r...

Tommy 2343

图片的base64表示

Base64编码的图片数据URI是一种将图片直接嵌入文本文件的技术,格式为data:image/[类型];base64,[编码数据]。它通过将二进制图片转换为ASCII字符串,省去了外部文件请求,适合小图标等资源。优点是减少HTTP请求、便于独立部署,缺点是体积增大33%、无法缓存、维护困难。适用于小型图片,但不推荐用于大文件。

bj_zhb的博客 1915

通过url下载图片

需求:通过url从服务器上获取图片,将图片转换成base64的字符串用来做业务。 代码: package com.su.mybatis.oracle.controller; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.U...

suchenbin的博客 2601

Java 图片转化成base64字符串互相转换+网络图片转换Base64的方法

最近遇到图片与base64字符串互相转换甚是头疼啊,把资源分享给大家,愿大家用的好用 话不多说直接上代码: 图片转化成base64字符串(不包含 data:image/jpeg;base64, 东西) //图片转化成base64字符串 //imgFile路径名称 如:“C:\Users\asus\Desktop\qm.png” public static String GetImageStr(String imgFile) { //将图片文件转化为字节数组字符串,并对其进行Bas

金蕊泛流霞 884
上一篇: 性能提高:循环中使用map匹配,而不是使用内层循环
下一篇: Mybatis Plus 中@TableField使用正解
一步一结
博客等级 码龄7年 50粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值