Base64和本地以及在线图片互转
package com.ruoyi.common.utils;
import java.io.ByteArrayOutputStream;
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 com.ruoyi.common.utils.string.StringUtil; import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder; @SuppressWarnings("restriction")
public class Base64Utils { public static void main(String[] args) throws Exception { //本地图片地址
String url = "D:\\wangyc.jpg";
//在线图片地址
String string = "http://cdn.yhswl.com/FreafUoc3LyJmoPC4sXBVE_qUAl9"; String str = Base64Utils.ImageToBase64ByLocal(url); String ste = Base64Utils.ImageToBase64ByOnline(string); System.out.println(str); Base64Utils.Base64ToImage(str,"D:\\test1.jpg"); Base64Utils.Base64ToImage(ste, "D:\\test2.jpg");
} /**
* 本地图片转换成base64字符串
* @param imgFile 图片本地路径
* @return
*
* @author ZHANGJL
* @dateTime 2018-02-23 14:40:46
*/
public static String ImageToBase64ByLocal(String imgFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 InputStream in = null;
byte[] data = null; // 读取图片字节数组
try {
in = new FileInputStream(imgFile); 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字符串
*
* @param imgURL 图片线上路径
* @return
*
* @author ZHANGJL
* @dateTime 2018-02-23 14:43:18
*/
public static String ImageToBase64ByOnline(String imgURL) {
ByteArrayOutputStream data = new ByteArrayOutputStream();
try {
// 创建URL
URL url = new URL(imgURL);
byte[] by = new byte[1024];
// 创建链接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
InputStream is = conn.getInputStream();
// 将内容读取内存中
int len = -1;
while ((len = is.read(by)) != -1) {
data.write(by, 0, len);
}
// 关闭流
is.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data.toByteArray());
} /**
* base64字符串转换成图片
* @param imgStr base64字符串
* @param imgFilePath 图片存放路径
* @return
*
* @author ZHANGJL
* @dateTime 2018-02-23 14:42:17
*/
public static boolean Base64ToImage(String imgStr,String imgFilePath) { // 对字节数组字符串进行Base64解码并生成图片 if (StringUtil.isEmpty(imgStr)) // 图像数据为空
return false; BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
} OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close(); return true;
} catch (Exception e) {
return false;
} } }
Base64和本地以及在线图片互转的更多相关文章
- 本地与在线图片转Base64及图片预览
查看效果:http://sandbox.runjs.cn/show/tgvbo9nq 本地图片转Base64(从而可以预览图片): function localImgLoad() { var src ...
- C# base64编码的文本与图片互转
/// <summary> /// base64编码的文本转为图片 /// </summary> /// <param name="txtFilePath&qu ...
- C# base64编码的字符串与图片互转
protected string ImgToBase64String(string Imagefilename) { try { Bitmap bmp = new Bitmap(Imagefilena ...
- C# base64 和图片互转
C# imgage图片转base64字符/base64字符串转图片另存成 //图片转为base64编码的字符串 protected string ImgToBase64String(string Im ...
- 在线图片上传、预览、裁切、放大、缩小之 cropbox.js 的应用
cropbox.js 是一个实现了图像在线剪裁的 jQuery .YUI 插件和 JavaScript 库. 上DEMO: 上传的图片可以使用滚轮放大与缩小当前选择的图片,后点击“裁切”后,在右侧的预 ...
- 本地预览图片html和js例子
本地预览图片html和js例子,直接上代码吧. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...
- IOS研究院之打开照相机与本地相册选择图片(六)
原创文章如需转载请注明:转载自雨松MOMO程序研究院本文链接地址:IOS研究院之打开照相机与本地相册选择图片(六) Hello 大家好 IOS的文章好久都木有更新了,今天更新一篇哈. 这篇文章主要学习 ...
- Android之本地相冊图片选取和拍照以及图片剪辑
转载请注明出处:http://blog.csdn.net/loveyaozu/article/details/51160482 相信有非常多Android开发者在日常开发中,因为项目需求,须要我们的A ...
- Photobucket不能用了怎么办?推荐10个在线图片储存服务!
近日,图片共享服务网站Photobucket更新了政策,要求用户缴纳399美元的年费,才能使用第三方网站图片储存服务. 由于Photobucket出台这一政策,亚马逊及其他电商平台上相关的产品图片已被 ...
随机推荐
- js字符串转为数字方法parseInt()、减号、乘号、JSON.parse()、Number()的效率比较
var a = '1'; var b = '0x1'; var runTest = function(timeTag, testFunction) { console.time(timeTag); f ...
- 技能篇丨FineCMS 5.0.10 多个漏洞详细分析
今天是一篇关于技能提升的文章,文章中的CMS是FineCMS,版本是5.0.10版本的几个漏洞分析,主要内容是介绍漏洞修补前和修补后的分析过程,帮助大家快速掌握该技能. 注:篇幅较长,阅读用时约7分钟 ...
- 异常处理,常用字符串方法,selenium模块
异常处理 什么是异常处理 (处理异常,报错error) print(1 / 0) # 报了0除错误 # 打印结果: Traceback (most recent call last): File &q ...
- itextpdf5单元格中的段落没有行间距
关于对表格中的段落没有行间距的解决方式:通过观察和推测的结论:itextpdf对一些属性,只会对最外层元素的属性进行接收处理,如行间距.例: Paragraph p = new Paragraph(1 ...
- [TCP/IP] TCP第三次握手失败怎么办
三次握手 客户端 ==> SYN是1同步 ,ACK确认标志是0,seq序号是x ==> 服务器 客户端 <== SYN是1同步 ,ACK确认标志是1,seq序号是y,ack确认号是x ...
- 关于k8s集群证书1年过期后,使用kubadm重新生成证书及kubeconfig配置文件的变化
这个证书很重要,不用说. 但手工生成证书,确实工作量大且容易出错. 推荐的方式,是保留/etc/kubernetes/pki目录下的ca.crt,ca.key,sa.crt,sa.key. 这四个文件 ...
- E03 【餐厅】Can I book a table for two for this evening,please?
核心句型 Can I book a table for two for this evening,please? 我能预定一张今晚的双人桌吗? What time do you want to hav ...
- 201871010104-陈园园 《面向对象程序设计(java)》第八周学习总结
201871010104-陈园园 <面向对象程序设计(java)>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- shell 之for循环几种写法
参见博客 http://blog.csdn.net/babyfish13/article/details/52981110 ,此博客写的非常清晰明了.
- day4_变量和作用域
全局变量与局部变量: 全局变量: 定义变量时,变量左边没有缩进,就是全局变量,可以被当前py文件的任何地方给引用 局部变量: 有缩进的变量就是局部变量 函数的作用域: def test1(): age ...