JavaScript 与 图片
2016-01-28 13:57
555 查看
在 HTML 文档中 <input type="file"> 标签每出现一次,一个 FileUpload 对象就会被创建。
upfiledom.value 获取路径
var files = upfiledom.files[0];获取文件
files.type 获取文件类型
files.size 文件大小
HTML5读取文件核心代码
var reader = new FileReader();
reader.readAsDataURL(files);
reader.onload = function (){
var image = new Image();
image.onload = function(){ 给image的src赋值加载完成之后自动执行此方法
var newcanvas = document.createElement("canvas");//创建canvas
newcanvas.style.display = "none";
var bodys = document.body;
bodys.appendChild(newcanvas);
var ctx = newcanvas.getContext("2d");//canvas上下文
newcanvas.width = width; //缩放之后的宽和高
newcanvas.height = height;
ctx.fillStyle = "#FFFFFF"; //
ctx.fillRect(0, 0, width, height); //整个canvas填充为白色
ctx.drawImage(image, 0, 0, this.width, this.height, 0, 0, width, height);
//drawImage方法有必要解释一下,前面两个0表示从image的左上点开始截取,截取的宽高就是
this.width,this.height。后面的两个0表示截取之后画在canvas的左上点位置,width和height
表示要画的宽高,如果这个宽高比前面的宽高大,那么相当于放大了,反之就是缩小。说白了这
个方法就是先从image截取一部分或全部,然后画在canvas上,不一定是等比例。
var DATA64 = newcanvas.toDataURL(type, 0.9);//canvas转图片 质量为0.9 类型为type
//这个DATA64和那个reader.result格式是一样的,内容不一样罢了,都可以赋值给image.src
还有,这个结果是base64编码的,后面需要atob解码
split1 = 把DATA64去掉头部信息 逗号及其之前的信息 "^data:.*base64,"
byteString = atob(splits1);//base64解码
var byteStringlength = byteString.length, ia = new Uint8Array(byteStringlength);//无符号8位整型
for (var i = 0; i < byteStringlength; i++) {
ia[i] = byteString.charCodeAt(i);//转成字符的Unicode编码
}
此时ia为不超过255(也就是8位)的数字的数组,长度是byteStringlength
return new Blob([ ia ], {type:this.ImagesType}); //用ia创建Blob对象返回
this_.BOLBID = this_.URL.createObjectURL(this_.FormBlob(DATA64));//创建指向这个Blob的URL
//而且这个URL可以当赋值给image.src
}
image.src = this.result 这就是图片文件读取的结果,然后下面处理
}
ajax注意下 FormData()
upfiledom.value 获取路径
var files = upfiledom.files[0];获取文件
files.type 获取文件类型
files.size 文件大小
HTML5读取文件核心代码
var reader = new FileReader();
reader.readAsDataURL(files);
reader.onload = function (){
var image = new Image();
image.onload = function(){ 给image的src赋值加载完成之后自动执行此方法
var newcanvas = document.createElement("canvas");//创建canvas
newcanvas.style.display = "none";
var bodys = document.body;
bodys.appendChild(newcanvas);
var ctx = newcanvas.getContext("2d");//canvas上下文
newcanvas.width = width; //缩放之后的宽和高
newcanvas.height = height;
ctx.fillStyle = "#FFFFFF"; //
ctx.fillRect(0, 0, width, height); //整个canvas填充为白色
ctx.drawImage(image, 0, 0, this.width, this.height, 0, 0, width, height);
//drawImage方法有必要解释一下,前面两个0表示从image的左上点开始截取,截取的宽高就是
this.width,this.height。后面的两个0表示截取之后画在canvas的左上点位置,width和height
表示要画的宽高,如果这个宽高比前面的宽高大,那么相当于放大了,反之就是缩小。说白了这
个方法就是先从image截取一部分或全部,然后画在canvas上,不一定是等比例。
var DATA64 = newcanvas.toDataURL(type, 0.9);//canvas转图片 质量为0.9 类型为type
//这个DATA64和那个reader.result格式是一样的,内容不一样罢了,都可以赋值给image.src
还有,这个结果是base64编码的,后面需要atob解码
split1 = 把DATA64去掉头部信息 逗号及其之前的信息 "^data:.*base64,"
byteString = atob(splits1);//base64解码
var byteStringlength = byteString.length, ia = new Uint8Array(byteStringlength);//无符号8位整型
for (var i = 0; i < byteStringlength; i++) {
ia[i] = byteString.charCodeAt(i);//转成字符的Unicode编码
}
此时ia为不超过255(也就是8位)的数字的数组,长度是byteStringlength
return new Blob([ ia ], {type:this.ImagesType}); //用ia创建Blob对象返回
this_.BOLBID = this_.URL.createObjectURL(this_.FormBlob(DATA64));//创建指向这个Blob的URL
//而且这个URL可以当赋值给image.src
}
image.src = this.result 这就是图片文件读取的结果,然后下面处理
}
ajax注意下 FormData()
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- HTML5中在客户端验证文件上传的大小
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解