Java模块 -- 从网络中读取图片 转换成Base64字符串

Java 中图片转换为 Base64 Base64 是一种将二进制数据编码为 ASCII 字符串的方案。它主要用于确保二进制数据在需要以文本形式处理时不会被损坏,如通过电子邮件发送文件或在 JSON 数据中嵌入图片。Base64 编码后的数据比原始数据大约多出 33%。 阅读详情

有一个小功能 , 从网络上读取图片 , 然后将图片转换为String类型,发给别人.

废话不多说了,直接上代码.


这里附上完整代码....有个jar包 , 不是那么好找,已经放在zip包中了....

Java 从网络中读取图片 转换成Base64字符串


我本地测试的时候,用的是Tomcat服务器.

对了,这里发现一个小bug,要是在try..catch之后,

直接finally , 将HttpSRLConnection关闭的话,读取的InputStream 就是空了...打断点看了也没想明白...欢迎大家交流.

然后我想了一下 , 将HttpURLConnection httpUrl 设置为成员变量 , 放在外面 , 每次返回结果之后 , 在调用close方法 , 单独讲这个连接关闭了. 



package com.readerpicture;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;

public class Controller {

	private HttpURLConnection httpUrl = null;
	
	public static void main(String[] args) throws Exception {
		Controller c = new Controller();
		String url = "http://localhost:8088/tomcat.png";
		String path = "D:/0000.JPG";
		InputStream in = c.saveToFile(url);	//从URL读取图片
		String str = c.GetImageStrByInPut(in);	//读取输入流,转换为Base64字符
		System.out.println(str);
		generateImage(str, path);			//将Base64字符转换为图片
		c.closeHttpConn();
		
	}

	
	public void closeHttpConn(){
		httpUrl.disconnect();
	}
	
	
	/**
	 * 从URL中读取图片,转换成流形式.
	 * @param destUrl
	 * @return
	 */
	public InputStream saveToFile(String destUrl){
		
		URL url = null;
		InputStream in = null; 
		try{
			url = new URL(destUrl);
			httpUrl = (HttpURLConnection) url.openConnection();
			httpUrl.connect();
			httpUrl.getInputStream();
			in = httpUrl.getInputStream();			
			return in;
		}catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 读取输入流,转换为Base64字符串
	 * @param input
	 * @return
	 */
	public String GetImageStrByInPut(InputStream input) {
		byte[] data = null;
		// 读取图片字节数组
		try {
			data = new byte[input.available()];
			input.read(data);
			input.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		// 对字节数组Base64编码
		BASE64Encoder encoder = new BASE64Encoder();
		return encoder.encode(data);// 返回Base64编码过的字节数组字符串
	}

	
	/**
	 * 图片转化成base64字符串 将图片文 件转化为字节数组字符串,并对其进行Base64编码处理
	 * 
	 * @return
	 */
	public static String GetImageStr(File file) {
		InputStream in = null;
		byte[] data = null;
		// 读取图片字节数组
		try {
			in = new FileInputStream(file);
			data = new byte[in.available()];
			in.read(data);
			in.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		// 对字节数组Base64编码
		BASE64Encoder encoder = new BASE64Encoder();
		return encoder.encode(data);// 返回Base64编码过的字节数组字符串
	}

	/**
	 * base64字符串转化成图片 对字节数组字符串进行Base64解码并生成图片
	 * 
	 * @param imgStr
	 *            数据内容(字符串)
	 * @param path
	 *            输出路径
	 * @return
	 */
	public static boolean generateImage(String imgStr, String path) {
		if (imgStr == null) // 图像数据为空
			return false;
		BASE64Decoder decoder = new BASE64Decoder();
		try {
			byte[] b = decoder.decodeBuffer(imgStr);// Base64解码
			for (int i = 0; i < b.length; ++i) {
				if (b[i] < 0) {// 调整异常数据
					b[i] += 256;
				}
			}
			// 生成jpeg图片
			OutputStream out = new FileOutputStream(path);
			out.write(b);
			out.flush();
			out.close();
			return true;
		} catch (Exception e) {
			return false;
		}
	}

}

DeepSeek 框架和技术栈分析 DeepSeek 诞生于对更高效、更强大的深度学习计算和模型训练的追求。随着深度学习模型的规模不断增大,如大型语言模型(LLMs)和复杂的视觉模型,传统的框架在处理这些大规模模型时面临着性能瓶颈和资源利用效率低下的问题。DeepSeek 旨在解决这些问题,通过优化框架设计和采用先进的技术栈,实现更高效的模型训练和推理,同时降低计算成本。 阅读详情

相关推荐

国密(3)- 预主密钥/主密钥计算和Finished消息的加解密

国密的ECC-SM3-SM4-CBC模式下的预主密钥和主密钥的生成过程介绍,以及Finished消息的加解密介绍

weixin_43408952的博客 6509

Java 实现图片转base64

一. 自己实现byte数组拷贝 public class Base64Util { // base64图片 存储的byte数组 private byte[] baseByte= new byte[0]; public static void main(String[] args) { Base64Util base64Util = new Base64Util(); base64Util.base64Encoding(); }

m0_47724597的博客 6846

倾向得分匹配的stata命令_政策评估方法引荐|广义倾向得分匹配(GPSM)

和大家分享一下最近学习的进展,在痛苦读完stata journal和练习OA程序,已经可以基本完成广义倾向得分的估计了,在国内这一方法还没有形成广泛运用,因此学习资源也是有点稀缺的,在文章最后给各位提供数据和代码以供练习。有问题可以随时文末留言或者联系我哦。人文社会科学中一般无法在实验室中控制样本个体的特征,我们一般采用“准自然实验”的研究路径,也就是不随机安排样本接受处理与否。但放弃随机分组假定...

weixin_39550258的博客 1万+

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万+

从CLIP到AnomalyCLIP:零样本异常检测的跨领域进化之路

本文探讨了从CLIP到AnomalyCLIP的技术演进,重点介绍了零样本异常检测在跨领域应用中的突破。AnomalyCLIP通过对象无关提示学习和多尺度特征提取,显著提升了工业质检、医疗影像等领域的检测精度,实现了高达96.4%的金属螺母划痕检测精度和85.7%的皮肤癌敏感度。这一技术为多模态模型在异常检测中的应用开辟了新路径。

r2s3t4的博客 111

AI驱动的iOS逆向工程自动化:14阶段工作流与Ghidra集成实践

逆向工程是软件安全分析的核心技术,通过反汇编、调试等手段解析程序内部逻辑与数据流。其原理在于将编译后的二进制代码还原为可理解的逻辑结构,从而发现潜在漏洞或理解软件行为。在移动安全领域,iOS逆向工程具有重要技术价值,能够用于安全审计、漏洞挖掘与恶意软件分析。传统iOS逆向依赖ipsw、class-dump、Frida等工具链组合,存在学习曲线陡峭与流程碎片化问题。本文介绍的ios-reverse-skills项目创新性地将14阶段逆向工程方法论封装为AI可调用的标准化脚本集,通过Ghidra脚本实现Swif

weixin_27268733的博客 430

java将图片转化为base64码

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。将图片转化为base64码就是可以将一幅图片数据编码成一串字符串,使用该字符串代替图片地址,从而不需要使用图片的 URL 地址。 示例中读取的是远程图片文件,如果要读取本地文件,请看链接:读取本地文件和远程文件https://blog.youkuaiyun.com/rear0312/article/details/125199724?spm=1001.2014.3001.5501...

资浅程序媛,个人公众/头条/百家号:郑州小闲人,关注权限已向你开放 1万+

COMSOL实现裂缝性储层油水两相流模拟的关键技术

多孔介质中的流体流动模拟是油气藏开发的核心技术,其基本原理基于达西定律和质量守恒方程。在裂缝性储层中,离散裂缝网络与基质系统的耦合流动带来了特殊的数值挑战。通过COMSOL Multiphysics平台实现的多物理场耦合技术,可以精确模拟油水两相在复杂裂缝系统中的渗流行为。该技术采用Level Set方法表征裂缝几何形态,结合自适应网格生成技术解决狭窄裂缝的网格剖分难题,并创新性地引入Bang-Larsen毛管压力滞后模型,显著提高了采收率预测精度。这些方法在致密油藏开发、水驱优化等工程实践中具有重要应用价

weixin_34005090的博客 229

java实现将图片转为base64格式

logoImgUrl = getImgStr(url);//图片链接 public static String getImgStr(String imgFile) { ByteArrayOutputStream data = new ByteArrayOutputStream(); try { // 创建URL ...

鱻焱的博客 3587

macOS 发票查验全攻略:从证书导入到Safari调试

本文详细介绍了在macOS上进行发票查验的全流程,包括证书下载、钥匙串访问导入、Safari浏览器调试等关键步骤。重点解决了验证码不显示等常见问题,提供了证书信任设置和开发者工具使用的实用技巧,帮助用户顺利完成税务发票在线查验。

weixin_29204749的博客 545

2025华为od机试真题B卷【版本管理】JavaScript实现

在 软件版本管理中,版本号由点分割的数字组成,例如 1.2.3 和 2.8。现在,你需要编写一个函数,计算两个版本号之间的可用版本号个数。这里的可用版本号指的是所有满足 version1<x<version2的版本号x的个数。若 version1 >=version2 返回0.,

MISAYAONE的博客 254

JAVA实现网络/本地图片转BASE64存储

如果是本地图片的话,其实和网络图片相差不多的,主要就是读取图片流的形式变一下。若有问题,可以留言探讨。网络图片转BASE64。

灵瑞的博客 4138

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java-从网络URL中读取图片转换成Base64字符串-靠谱版

刚开始开始参考了两篇文章: http://blog.youkuaiyun.com/simba_cheng/article/details/52295169 http://blog.youkuaiyun.com/hfhwfw/article/details/5544408 发现生成的Base64字符串转换为本地图片有如下问题: 很明显只能显示一部分,而且BASE64Encoder报错,找不到jar包,原因是Ba...

wenlin_xie的专栏 2万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java网络图片转base64_Java 从网络中读取图片 转换成Base64字符串

有一个小功能 , 从网络上读取图片 , 然后将图片转换为String类型,发给别人.废话不多说了,直接上代码.这里附上完整代码....有个jar包 , 不是那么好找,已经放在zip包中了....我本地测试的时候,用的是Tomcat服务器.对了,这里发现一个小bug,要是在try..catch之后,直接finally , 将HttpSRLConnection关闭的话,读取的InputStream 就...

weixin_34131379的博客 1667

本地图片/网络图片转换成Base64字符串

下面先介绍第一种:把网络图片转换成Base64字符串 第二种:把本地图片转换成base64 由此两种方法都介绍完了,下面附上源码: package zhang; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net....

一介书生的博客 2414

java 把网络图片转换成Base64 字符串

我整理的一些关于【Java,网络,字符串】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1Java 将网络图片转换成 Base64 字符串的完整指南 在现代的 Java 开发中,处理图片数据是一个常见的需求。其中,将网络图片转换为 Base64 字符串的用例也越来...

weixin_41032576的博客 640

java读取base64编码字符串并转成图片

    在网络中传输的图片,通常都是使用base64格式文件传输,本次读取的是保存在本地文件中的base64字符串,现在将其解析为原始图片。import java.io.*; import sun.misc.BASE64Decoder; public class DailyCode { public static void main(String[] args) { St...

u011550708的专栏 5217

JAVA base64图片字符串和file之间互相转换

import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.*; public class Base64Img { //图片转化成base64字符串 public static String GetImageStr(File imgFile) {//将图片文件转化为字节数组字符串,并对...

一个吃水不忘挖井人的博客。希望能帮助到你 8218

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

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

金蕊泛流霞 883

Java 将网络图片转成Base64码,

// 将网络图片转成Base64码, 此方法可以解决解码后图片显示不完整的问题 public static String imgBase64(String imgURL) { ByteArrayOutputStream outPut = new ByteArrayOutputStream(); byte[] data = new byte[1024]; try { ...

V_1920的博客 2074

把一个图片URL转换成Base64

@Test public void imageBase64Test() { String imgUrl = "http://bpic.588ku.com//element_origin_min_pic/17/03/03/7bf4480888f35addcf2ce942701c728a.jpg"; String base64 = image2Base64...

laiyuan999的博客 1万+

java实现将图片读取成base64字符串,将base64字符串存储为图片。

全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现将图片读取成base64字符串 ,将base64字符串存储为图片。将图片转化为字符串以后,由于字符串更方便在网络上通过ajax传输、在网络web前台和后台间进行传输。import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; 图片转化成base64字符串

4万+

本地图片转换成base64字符串

/** * 本地图片转换成base64字符串 * @param imgFile 本地图片地址 * @return */ public static String ImageToBase64ByLocal(String imgFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 InputStrea...

云下的你 1442

将本地图片或者网络图片转base64字符串

场景说明: 由于种种原因,例如:内网,等...。无法在的程序里直接用图片的链接显示,这是通常是将图片下载下来,在将下载的图片进行base64转码显示 base64转码说明: 使用java.util.Base64,对字节数组进行Base64编码 将图片转成base64字符串以后 要加上前缀data:image/png;base64, 小编封装的工具类采用的是java.net.URL 文件下载传统的和okhttp下载比较,请看小编这篇博客 ==》文章入口 将本地图片转base64字符串: 01、将文件读

suqinyi的博客 2158

JAVA将图片(本地或者网络资源)转为Base64字符串

https://blog.youkuaiyun.com/persistencegoing/article/details/84376427 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io...

persistence勿忘初心 1145

JAVA - 网络/本地图片互转Base64

简介:实际需求是,接口传输图片等文件时,先转成Base64字符串,再传输,然后接受,再转成图片 一、读取网络图片转Base64 public static String readNetFile(String imgURL){ ByteArrayOutputStream data = new ByteArrayOutputStream(); t...

a985548426的博客 866
上一篇: MongoDB_Java连接MongoDB数据库 Mongo / MongoClient 的使用
下一篇: WebService(1)_WebService概述
Simba_cheng
博客等级 码龄11年 250粉丝 203原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值