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;
		}
	}

}

从零构建基于ZYNQ与AD9361的SDR信号源:FPGA逻辑与射频前端的协同设计 本文详细介绍了从零开始构建基于ZYNQ与AD9361的SDR信号源的完整流程。通过解析FPGA逻辑与射频前端的协同设计,重点阐述了如何利用FPGA生成基带信号,并通过ARM处理器配置AD9361,最终实现一个可编程的2.4GHz载波信号发生器。内容涵盖硬件选型、Vivado环境搭建、AXI总线通信、LVDS接口设计及软件驱动开发,为SDR开发者提供了实用的实战指南。 阅读详情

相关推荐

STM32中RS485方向控制引脚应用详解

深入解析STM32如何通过GPIO控制RS485通讯的方向引脚,实现半双工通信的精准切换。重点讲解硬件连接与软件时序配合,确保rs485通讯稳定可靠,适用于工业控制等实际场景。

weixin_42451850的博客 398

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

提升仿真效率:Synopsys VCS高级编译选项优化技巧(2023最新版)

本文深入探讨了Synopsys VCS 2023版本中的高级编译选项优化技巧,帮助工程师提升仿真效率。通过并行编译、智能代码分析、精准覆盖率采样等策略,结合真实案例展示如何显著缩短仿真周期并优化资源使用,适用于数字芯片验证和大型SoC设计。

weixin_30338481的博客 113

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

从零开始:使用Mask2Former训练你的专属图像分割数据集

本文详细介绍了如何使用Mask2Former训练自定义图像分割数据集,从环境配置、数据集准备到模型训练与优化。通过实战技巧和问题排查指南,帮助开发者高效完成从零开始的图像分割任务,特别适合需要处理自定义数据集的AI研究人员和工程师。

weixin_30566063的博客 642

Docker网络冲突?手把手教你解决Dify社区版无法访问172.18.0.0网段的问题

本文详细解析了在部署Dify社区版时,因Docker默认网段与局域网冲突导致无法访问172.18.0.0网段的问题。通过剖析Docker网络原理,提供了修改Docker守护进程默认地址池的根治方案,并介绍了在Compose文件中指定自定义网络等备选方法,帮助用户彻底解决网络冲突,保障服务稳定运行。

p8q9r0的博客 484

java将图片转化为base64码

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

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

28GHz毫米波滤波器设计实战:用SynMatrix快速搞定SIW带通滤波器(附完整参数)

本文详细介绍了如何使用SynMatrix工具链高效设计28GHz SIW带通滤波器,涵盖智能参数预测、多物理场联合优化和加工误差补偿等核心技术。通过实战案例和完整参数模板,帮助射频工程师快速实现毫米波滤波器设计,显著提升工作效率并避免反复迭代。

weixin_29284657的博客 495

java实现将图片转为base64格式

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

鱻焱的博客 3587

【第1章>第9节】基于FPGA的图像开运算处理算法的Verilog实现

本文介绍了基于FPGA的开运算图像处理实现方法。主要内容包括:1)输入图像二值化处理,通过阈值将灰度图像转换为二值图像;2)数据缓存与窗口提取,使用寄存器数组缓存5行图像数据并构建5×5处理窗口;3)腐蚀运算逻辑,判断窗口内是否全为白色像素;4)膨胀运算逻辑,检测窗口内是否存在白色像素。最后给出了Verilog实现方案,通过级联腐蚀和膨胀模块完成开运算处理。该方法可用于FPGA图像处理算法开发。

MATLAB,verilog,python,opencv,tensorflow,caffe,C,C++ 313

关于UMI设备采集数据的模型训练方法

模仿学习如专家模型、VLA模型,ACT、DP、openpi等算法模型训练时,都是使用的机器人的绝对位姿或关节角;而UMI记录的轨迹是相对于UMI起始点的,可以理解为是相对于起点的绝对增量,对应到机器人中就是相对于末端TCP的增量。在用模型进行训练时,当然可以,但这样进行模型训练的话达不到跨本体的能力,因为模型本身还是学习的基于机器人base坐标系的绝对位姿关系,倘若用这种方式进行处理,则UMI可以理解为是一个遥操的方法,本质还是记录的机器人的state。在看了和。

boss-dog 420

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

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

灵瑞的博客 4138

安全与加密常识(10)linux系统证书管理

1. 将自定义CA证书(如my-ca.crt)放到源目录# 2. 编辑配置文件,启用该证书(末尾添加一行 my-ca.crt)# 3. 执行命令同步(核心工作环节)# 4. 验证结果:检查是否生成哈希链接和合并到证书束ls /etc/ssl/certs/my-ca.pem # 证书文件ls /etc/ssl/certs/$(openssl x509 -hash -noout -in /usr/share/ca-certificates/my-ca.crt).0 # 哈希链接。

二进制君 282

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

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

weixin_34131379的博客 1667

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

本地图片/网络图片转换成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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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
上一篇: 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、付费专栏及课程。

余额充值