data:image/png;base64 上传图像将图片转换成base64格式
大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAAA3NCSVQICAjb4U/gAAAABlBMVEX///+ZmZmOUEqyAAAAAnRSTlMA/1uRIrUAAAAJcEhZcwAACusAAArrAYKLDVoAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDkvMjAvMTIGkKG+AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAAB1JREFUCJljONjA8LiBoZyBwY6BQQZMAtlAkYMNAF1fBs/zPvcnAAAAAElFTkSuQmCC
那么这是什么呢?这是Data URI scheme。
<img src="http://mail.163.com/images/x.png" />
也可以这样显示:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAAA3NCSVQICAjb4U/gAAAABlBMVEX///+ZmZmOUEqyAAAAAnRSTlMA/1uRIrUAAAAJcEhZcwAACusAAArrAYKLDVoAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDkvMjAvMTIGkKG+AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAAB1JREFUCJljONjA8LiBoZyBwY6BQQZMAtlAkYMNAF1fBs/zPvcnAAAAAElFTkSuQmCC" />
把图像文件的内容直接写在了HTML 文件中,这样做的好处是,节省了一个HTTP 请求。坏处是浏览器不会缓存这种图像。
private string decodeBase64ToJpg(string dataURL,string imgName)
{
try
{
string filePath = "D:\\Temp\\images\\" + imgName;
byte[] arr = Convert.FromBase64String(dataURL.Substring(dataURL.IndexOf("base64,") + ).Trim('\0'));
using (MemoryStream ms = new MemoryStream(arr))
{
Bitmap bmp = new Bitmap(ms);
//新建第二个bitmap类型的bmp2变量
Bitmap bmp2 = new Bitmap(bmp, bmp.Width, bmp.Height);
//将第一个bmp拷贝到bmp2中
Graphics draw = Graphics.FromImage(bmp2);
draw.DrawImage(bmp,,);
draw.Dispose();
bmp2.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Close();
return filePath;
}
}
catch (Exception ex)
{
return "";
} }
public string decodeBase64ToPng(string dataURL, string imgName)
{
string filename = "";//声明一个string类型的相对路径
string imagesurl2 = ""; String base64 = dataURL.Substring(dataURL.IndexOf(",") + ); //将‘,’以前的多余字符串删除
System.Drawing.Bitmap bitmap = null;//定义一个Bitmap对象,接收转换完成的图片
try//会有异常抛出,try,catch一下
{
String inputStr = base64;//把纯净的Base64资源扔给inpuStr,这一步有点多余 byte[] arr = Convert.FromBase64String(inputStr);//将纯净资源Base64转换成等效的8位无符号整形数组 System.IO.MemoryStream ms = new System.IO.MemoryStream(arr);//转换成无法调整大小的MemoryStream对象
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(ms);//将MemoryStream对象转换成Bitmap对象 ms.Close();//关闭当前流,并释放所有与之关联的资源
bitmap = bmp;
filename = imgName;//所要保存的相对路径及名字+ ".png"
//string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString()); //获取程序根目录
imagesurl2 = "D:\\Temp\\images\\" + filename; //转换成绝对路径
bitmap.Save(imagesurl2, System.Drawing.Imaging.ImageFormat.Png);//保存到服务器路径 }
catch (Exception)
{
}
return imagesurl2;//返回路径
}
前端代码:
<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title>ajax</title> <script src="js/jquery-1.9.1.min.js"></script>
</head> <body>
<div class="upload">
<input type="button" class="btn" onclick="img_upload_file.click()" value="上传">
<input type="file" id="img_upload_file" style="display: none;" class="test">
<div class="img_center">
<img src="" id="img_upload_show" style="border: #0000FF solid 2px;width: 600px;height: 600px;">
</div>
</div>
<script type="text/javascript">
var jsonData = '';
$(function() { $("#img_upload_file").change(function() {
var oFile = this.files[0];
console.log("oFile")
console.log(oFile)
var reader = new FileReader();
reader.readAsDataURL(oFile); //调用自带方法进行转换
reader.onload = function(e) {
$("#img_upload_show").attr("src", this.result); //将转换后的编码存入src完成预览
var rFilter = /^(image\/bmp|image\/gif|image\/jpeg|image\/png|image\/tiff)$/i;
console.log(oFile.type);
if(!rFilter.test(oFile.type)) {
alert("文件格式必须为图片");
return;
}
/*if(oFile.size > iMaxFilesize) {
alert("图片大小不能超过2M");
return;
}*/ var xyString1 = "462.7558,722.0276,12734808.3808,3570844.6208";
var xyString2 = "1272.6326,760.5932,12734820.7004,3570844.3868";
var xyString3 = "394.1948,953.4210,12734808.2984,3570839.6826";
var xyString4 = "1268.3476,996.2716,12734820.7004,3570839.4260";
jsonData = oFile.name + " " + oFile.type + " " + this.result + " " + xyString1 + " " + xyString2 + " " + xyString3 + " " + xyString4;
console.log(jsonData);
$.ajax({
url: 'http://127.0.0.1:6163/igs/rest/test/GetImage',
data: jsonData,
type: "POST",
dataType: "json",
contentType: 'application/x-www-form-urlencoded;charset=UTF-8', //防止乱码
success: function(data) {
console.log(data);
}
}); };
});
})
</script>
</body> </html>
data:image/png;base64 上传图像将图片转换成base64格式的更多相关文章
- Java对网络图片/本地图片转换成Base64编码和解码
一.将本地图片转换成Base64编码字符串 /** * 将本地图片转换成Base64编码字符串 * * @param imgFile 图片目录路径 * @return */ public static ...
- ASP.Net中实现上传过程中将文本文件转换成PDF的方法
iTextSharp是一个常用的PDF库,我们可以使用它来创建.修改PDF文件或对PDF文件进行一些其他额外的操作.本文讲述了如何在上传过程中将文本文件转换成PDF的方法. 基本工作 在开始之前,我们 ...
- java 图片转换成base64字符串
import java.io.ByteArrayOutputStream; import java.io.FileInputStream;import java.io.FileOutputStream ...
- delphi将图片转换成Base64编码函数
{************************************************************************** 名称: BaseImage 参数: fn: TF ...
- js绝对地址图片转换成base64的方法
//将图片转换成base64 function getBase64Image(url, callback){ var canvas = document.createElement('canvas') ...
- JS将图片转换成Base64码
直接上代码 html页面代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- 图片转换成Base64编码集成到html文件
首先为什么要这么做? 原因很简单这样可以减少与服务器的请求,当然对于一些浏览器并不支持,如IE8.通常用在手机版网站中,具体转化方法如下: 1.在线打开Base64的编码器将图片编码成Base64 ...
- Base64字符保存图片,图片转换成Base64字符编码
//文件转换成Base64编码 public static String getFileBase64Str(String filePath) throws IOException { String f ...
- 利用PHP将图片转换成base64编码的实现方法
先来说一下为什么我们要对图片base64编码 base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一.base64主要不是加密,它主要的用途是把某些二进制数转成普通字符用于网络传输. ...
随机推荐
- Linux基础命令---显示文本look
look 显示文件中以特定字符串开始的行.在look执行二进制搜索时,必须对文件中的行进行排序.如果未指定文件,则使用文件“/usr/share/dict/words“,只比较字母数字字符,忽略字母字 ...
- php CI框架中URL特殊字符处理与SQL注入隐患
php CI框架中URL特殊字符处理与SQL注入隐患 php CI框架中URL特殊字符有很多是不支持的,导致像c++,括号这些常用的分类,字符都无法正常显示很头痛,而在配置里增加单引号' 反斜杠\ 这 ...
- centos下搭建Jenkins持续集成环境(安装jenkins)
1.安装JDK yum install -y java 2.安装jenkins 添加Jenkins库到yum库,Jenkins将从这里下载安装. 1 wget -O /etc/yum.repos.d/ ...
- bc 命令
bc命令是一种支持任意精度的交互执行的计算器语言.是Linux简单的计算器,能进行进制转换与计算.能转换的进制包括十六进制.十进制.八进制.二进制等.可以使用的运算符号包括(+)加法.(-)减法.(* ...
- jquery操作节点
var v= $("input[type='checkbox'][name='ids']:checked").closest('tr').find('td:eq(2)').map( ...
- Java中在java.sql.Date的系统时间上加上30天并写入oracle
在java.sql.Date的系统时间上加上30天,并写入oracle 思路:通过 Calendar.getInstance() 获得对象,然后 add() 方法添加 时间,再通过 new java. ...
- Eloquent JavaScript #12# Handling Events
索引 Notes onclick removeEventListener Event objects stopPropagation event.target Default actions Key ...
- Java连接数据库 #01# JDBC单线程适用
官方教程(包括 javase的基础部分):JDBC Basics 重新梳理.学习一下“Java连接数据库”相关的内容. 因为最开始没有认真学多线程和JDBC,一直在自己写的多线程程序中维持下面的错误写 ...
- Java学习笔记之linux配置java环境变量(三种环境变量)
0x00 压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车 ...
- go开发工具及安装使用(Liteide)Liteide-centos6.8 安装
开发工具介绍 LiteIDE https://github.com/visualfc/liteide/blob/master/liteidex/deploy/welcome/zh_CN/readme. ...