file,js图片预览
来源:互联网 发布:淘宝开个什么店赚钱 编辑:程序博客网 时间:2024/06/05 02:58
URL.createObjectURL和URL.revokeObjectURL(不适用低版本浏览器)
一.URL.createObjectURL
URL.createObjectURL()方法会根据传入的参数创建一个指向该参数对象的URL. 这个URL的生命仅存在于它被创建的这个文档里. 新的对象URL指向执行的File对象或者是Blob对象.
语法:
objectURL = URL.createObjectURL(blob || file);
参数:
File对象或者Blob对象
这里大概说下File对象和Blob对象:
File对象,就是一个文件,比如我用input type="file"标签来上传文件,那么里面的每个文件都是一个File对象.
Blob对象,就是二进制数据,比如通过new Blob()创建的对象就是Blob对象.又比如,在XMLHttpRequest里,如果指定responseType为blob,那么得到的返回值也是一个blob对象.
注意点:
每次调用createObjectURL的时候,一个新的URL对象就被创建了.即使你已经为同一个文件创建过一个URL. 如果你不再需要这个对象,要释放它,需要使用URL.revokeObjectURL()方法. 当页面被关闭,浏览器会自动释放它,但是为了最佳性能和内存使用,当确保不再用得到它的时候,就应该释放它.
二.URL.revokeObjectURL
URL.revokeObjectURL()方法会释放一个通过URL.createObjectURL()创建的对象URL. 当你要已经用过了这个对象URL,然后要让浏览器知道这个URL已经不再需要指向对应的文件的时候,就需要调用这个方法.
具体的意思就是说,一个对象URL,使用这个url是可以访问到指定的文件的,但是我可能只需要访问一次,一旦已经访问到了,这个对象URL就不再需要了,就被释放掉,被释放掉以后,这个对象URL就不再指向指定的文件了.
比如一张图片,我创建了一个对象URL,然后通过这个对象URL,我页面里加载了这张图.既然已经被加载,并且不需要再次加载这张图,那我就把这个对象URL释放,然后这个URL就不再指向这张图了.
语法:
window.URL.revokeObjectURL(objectURL);
参数:
objectURL 是一个通过URL.createObjectURL()方法创建的对象URL.
这两个方法不支持低版本浏览器.
最后,给个综合栗子:
通过ajax获取一张图片,显示在页面里.
html:
<body> <button id="getPic">获取图片的Blob数据</button></body>
js:
//获取图片Blob数据 document.getElementById(‘getPic‘).onclick = function(e){ $.ajax({ type:‘GET‘, url:‘img.png‘, resDataType:‘blob‘, imgType:‘png‘, success:function(resText,resXML){ var img = document.createElement(‘img‘); var objectUrl = window.URL.createObjectURL(resText); img.src = objectUrl; img.onload = function(){ window.URL.revokeObjectURL(objectUrl); }; document.body.appendChild(img); }, fail:function(err){ console.log(err) } }); e.preventDefault(); }
指定返回的数据格式为blob二进制数据.
通过返回的图片二进制数据来创建一个对象URL.
当图片加载完成后释放对象URL.
兼容IE
兼容IE可以使用IE的滤镜
关于滤镜可参考 http://www.jb51.net/css/71829.html
这里使用到
filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )属性:enabled : 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true : 默认值。滤镜激活。 false : 滤镜被禁止。 sizingMethod : 可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。crop : 剪切图片以适应对象尺寸。 image : 默认值。增大或减小对象的尺寸边界以适应图片的尺寸。 scale : 缩放图片以适应对象的尺寸边界。 src : 必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。document.selection 参考文章 http://blog.csdn.net/cui_angel/article/details/7837749document.selection 表示当前网页中的选中内容。
var i = document.getElementById("file");
方法有:
clear 清除选中的内容
empty 取消选中
createRange 返回 TextRange 或 ControlRange 对象
createRangeCollection 不支持
属性有:
type 选中内容的类型
typeDetail 不支持 二、document.selection.createRange()详细介绍
document.selection.createRange() 根据当前文字选择返回 TextRange 对象,或根据控件选择返回ControlRange 对象。
配合 execCommand,在 HTML 编辑器中很有用,比如:文字加粗、斜体、复制、粘贴、创建超链接等。
var div = document.getElementById("pre");
//非IE
i.onchange = function(){
//使用window.URL.createObjectURL(i.files[0])
}
//IE
i.onpropertychange = function(){div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";div.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = i.value;
}
- js file 图片预览
- file,js图片预览
- JS input file图片上传预览效果
- input file 预览图片
- input file图片预览
- 点击文字触发file标签 ,js图片预览
- JS+file控件实现图片的上传和预览
- HTML中通过js对File组件进行图片预览
- [js实例] input type=file 上传图片预览 createObjectURL
- 上传图片预览JS脚本 Input file图片预览的实现示例
- 上传图片预览JS脚本 Input file图片预览的实现示例
- 上传图片预览JS脚本 Input file图片预览的实现示例
- 上传图片预览JS脚本 Input file图片预览的实现示例
- 上传图片预览JS脚本 Input file图片预览的实现示例
- File 上传图片的预览
- input file上传图片预览
- file 选择图片后预览
- input file 上传图片预览
- JSP编码以及乱码解决总结
- Ubuntu 安装MySQL 远程访问
- Mongo多个Collection的关联操作实现
- Prometheus 实战于源码分析之alert
- STM32常用数据类型及其取值范围
- file,js图片预览
- linux 安装mysql
- huffman编解码算法实验与压缩效率分析
- jstorm kafka插件使用案例
- 集合框架
- Uncaught DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame.
- Spring Boot <一> 初识了解
- NYOJ 63 小猴子下落
- 链表2:链表中倒数第k个结点