网络图片地址直接转Base64
最近懒得动,博客很久没更了。
现在很多云服务,图片保存在网络中了。或者对接其他系统,资源也都是拿到的地址。由于我方服务器处理器内存磁盘空间都较小,想直接拿到网络图片地址的base64值。
以前的方法是先把网络图片下载到服务器,然后转base64,耗费服务器资源。弃之!
方法来源于网友,本博客只是收录:
通用方法:
/*** 将网络图片编码为base64** @param url* @return* @throws*/public static String encodeImageToBase64(URL url) throws Exception {//将图片文件转化为字节数组字符串,并对其进行Base64编码处理System.out.println("图片的路径为:" + url.toString());//打开链接HttpURLConnection conn = null;try {conn = (HttpURLConnection) url.openConnection();//设置请求方式为"GET"conn.setRequestMethod("GET");//超时响应时间为5秒conn.setConnectTimeout(5 * 1000);//通过输入流获取图片数据InputStream inStream = conn.getInputStream();//得到图片的二进制数据,以二进制封装得到数据,具有通用性ByteArrayOutputStream outStream = new ByteArrayOutputStream();//创建一个Buffer字符串byte[] buffer = new byte[1024];//每次读取的字符串长度,如果为-1,代表全部读取完毕int len = 0;//使用一个输入流从buffer里把数据读取出来while ((len = inStream.read(buffer)) != -1) {//用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度outStream.write(buffer, 0, len);}//关闭输入流inStream.close();byte[] data = outStream.toByteArray();//对字节数组Base64编码BASE64Encoder encoder = new BASE64Encoder();String base64 = encoder.encode(data);System.out.println("网络文件[{}]编码成base64字符串:[{}]"+url.toString()+base64);return base64;//返回Base64编码过的字节数组字符串} catch (IOException e) {e.printStackTrace();throw new Exception("图片上传失败,请联系客服!");}}
调用该方法(转码的base64值不带前缀,需自行添加):
URL url = new URL(user.getPicture());
String base64str=encodeImageToBase64(url);
阿里云的API我用得少,也找了一个,我用永久地址的图片(公共读的bucket)测试发现不行,还没有用私有bucket的图片地址测试,有时间再说,代码见下:
public static String getBase64FromUrl(String imgUrl) throws IOException {String prfFix = "data:image/" + "jpeg;base64,";OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName,imgUrl, HttpMethod.GET);req.setExpiration(new Date(new Date().getTime()+1000L * 60L * 60L));req.setProcess(prfFix);URL signedUrl = ossClient.generatePresignedUrl(req);System.out.println(signedUrl.toString());HttpClient client = new DefaultHttpClient();HttpGet get = new HttpGet(signedUrl.toString());HttpResponse response = client.execute(get);if (response.getStatusLine().getStatusCode() == 200){HttpEntity entity = response.getEntity();byte[] data = EntityUtils.toByteArray(entity);BASE64Encoder encoder = new BASE64Encoder();String encode = encoder.encode(data);return encode;}else {return null;}}
网络图片地址直接转Base64相关推荐
- 网络图片url转换成base64
根据图片url转base64 网上查找的转换方法用的包是sun.misc.BASE64Encoder,需要导jar包,这里换成了java.util.Base64,可以直接使用,话不多说,代码如下: i ...
- JAVA 图片地址路径转换 Base64 工具类
工具类代码: import sun.misc.BASE64Encoder; import java.io.ByteArrayOutputStream; import java.io.FileInput ...
- 根据图片地址src转base64格式
本地地址转换不需要考虑跨域问题 但图片是网上的链接需要解决浏览器提示的跨域问题 本人解决方法是chrome右键属性打开 目标加–args --disable-web-security --user-d ...
- 根据网络图片地址获取资源的字节流
/*** 根据地址获得数据的字节流* @param strUrl 网络连接地址* @return*/ private static byte[] getImageFromNetByUrl(String ...
- Java通过图片url地址获取图片base64位字符串的两种方式
工作中遇到通过图片的url获取图片base64位的需求.一开始是用网上的方法,通过工具类Toolkit,虽然实现的代码比较简短,不过偶尔会遇到图片转成base64位不正确的情况,至今不知道为啥. 之后 ...
- 通过网络图片地址,保存图片到本地,使用File打开图片
/*** 保存图片到本地* @param fileUrl 图片地址* @return*/ public static File saveImg(String fileUrl){//截取图片后缀名if( ...
- img标签src引用网络图片,页面不显示,返回403错误,网络图片地址在浏览器能加载,放html却不能显示
在html页面加入<meta name="referrer" content="no-referrer">标签,就可以解决页面加载网络图片的问题, ...
- 网络图片地址转为字节流
public class GetByteByNetUrl {/** * 根据地址获得数据的字节流 * @param strUrl 网络连接地址 * @return */ public static b ...
- 图片转Base64 编码工具类
一.简介:本工具类包含本地图片转Base64编码 和 远程图片转 Base64编码 二.代码实例 package org.jeecg.common.util;import java.io.ByteAr ...
- vue项目将页面生成pdf
项目场景: vue项目运行在移动端(企业微信聊天栏工具.企业微信浏览器.微信浏览器.外部浏览器),PC端(微信浏览器.其他厂商浏览器),利用html2canvas将页面生成图片文件,并采用jspdf将 ...
最新文章
- 搭建Hexo部署到github上
- C++接收字符串数组_C++模拟面试:从数组“紧凑”操作说开来
- cocos2d-x环境配置和常见问题
- LVS+Keepalived 高可用群集的介绍和搭建步骤
- form表单的一个页面多个上传按钮实例
- war包部署-排除内嵌的tomcat
- centos 离线安装mysql_CentOS6离线安装mysql-5.7.25
- Redis中的管道有什么用?
- 学习C语言必须掌握的10个经典的C语言小程序
- npm下载以来版本问题 npm ERR! code ERESOLVE
- Bootstrap实战(第一弹:栅格实现5等分或8等分)
- Tesseract OCR图片提取中文并转换为Excel的示例(附Python代码)
- Mixamo动画导入Unity中常见问题
- Mr. Kitayuta vs. Bamboos
- 通向互联网未来的七个路标
- 旅游类App的原型制作分享
- HTML插入空格 HTML多个空格 HTML实体
- spss菜单小介绍【跟阿婷一起学spss 03 在入坑边缘疯狂试探】
- flutter git 拉不起来_这些基础不牢固,我们的蛙泳就别想拉起来
- 【报表开发】:BI---新视界---请休假个人报表