项目需要图片上传前预览,网上找了他人写的一个jquery插件,因为作者写的时间较早,浏览器的更新换代很快,我改改了,增强浏览器版本兼容性,支持ie6+、firefox、chrome。
插件代码:
//说明:图片上传预览插件
//上传的时候可以生成固定宽高范围内的等比例缩放图
//参数设置:
//width 存放图片固定大小容器的宽
//height 存放图片固定大小容器的高
//imgDiv 页面DIV的JQuery的id
//maxSize 图片大小最大限制(K)
//imgType 数组后缀名
//**********************图片上传预览插件*************************
(function($) {
jQuery.fn.extend({
uploadPreview: function(opts) {
opts = jQuery.extend({
width: 0,
height: 0,
imgDiv: "#imgDiv",
maxSize:300,
imgType: ["gif", "jpeg", "jpg", "bmp", "png"],
callback: function() { return false; }
}, opts || {});
//var _self = this;
var _this = $(this);
var imgDiv = $(opts.imgDiv);
imgDiv.width(opts.width);
imgDiv.height(opts.height);
var version = parseInt($.browser.version,10);
autoScaling = function() {
if (version == 7 || version == 8 || version == 9) imgDiv.get(0).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "image";
var img_width = imgDiv.width();
var img_height = imgDiv.height();
if (img_width > 0 && img_height > 0) {
var rate = (opts.width / img_width < opts.height / img_height) ? opts.width / img_width : opts.height / img_height;
if (rate <= 1) {
if (version == 7 || version == 8 || version == 9) imgDiv.get(0).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "scale";
imgDiv.width(img_width * rate);
imgDiv.height(img_height * rate);
} else {
imgDiv.width(img_width);
imgDiv.height(img_height);
}
var left = (opts.width - imgDiv.width()) * 0.5;
var top = (opts.height - imgDiv.height()) * 0.5;
imgDiv.css({ "margin-left": left, "margin-top": top });
imgDiv.show();
}
},
createImg = function(){
imgDiv.html('');
var img = $("<img />");
imgDiv.replaceWith(img);
imgDiv = img;
},
_this.change(function() {
if (this.value) {
if (!RegExp("\.(" + opts.imgType.join("|") + ")$", "i").test(this.value.toLowerCase())) {
alert("图片类型必须是" + opts.imgType.join(",") + "中的一种");
this.value = "";
return false;
}
imgDiv.hide();
if ($.browser.msie && version < 10) {
if (version == 6) {
var image = new Image();
image.onload = function(){
if( (image.fileSize/1024) > opts.maxSize) {
alert('图片大小不能超过'+opts.maxSize+'K');
return false;
}
}
image.src = 'file:///' + this.value;
createImg();
imgDiv.attr('src', image.src);
autoScaling();
} else {
this.select();
var img = document.selection.createRange().text;
var image = new Image();
image.onload = function(){
if( (image.fileSize/1024) > opts.maxSize) {
alert('图片大小不能超过'+opts.maxSize+'K');
return false;
}
}
image.src = img;
imgDiv.html('');
imgDiv.css({ filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image)" });
imgDiv.get(0).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "image";
try {
imgDiv.get(0).filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = img;
} catch (e) {
alert("无效的图片文件!");
return;
}
setTimeout("autoScaling()", 100);
}
}
else {
try{
var file = null;
var size = 0;
if(this.files && this.files[0] ){
file = this.files[0];
size = file.size;
}else if(this.files && this.files.item(0)) {
file = this.files.item(0);
size = file.fileSize;
}
if((size/1024) > opts.maxSize){
alert('图片大小不能超过'+opts.maxSize+'K');
return false;
}
createImg();
//Firefox 因安全性问题已无法直接通过input[file].value 获取完整的文件路径
try{
//Firefox7.0 以下
imgDiv.attr('src', file.getAsDataURL());
}catch(e){
//Firefox8.0以上
imgDiv.attr('src', window.URL.createObjectURL(file));
}
imgDiv.css({ "vertical-align": "middle" });
setTimeout("autoScaling()", 100);
}catch(e){
//支持html5的浏览器,比如高版本的firefox、chrome、ie10
if (this.files && this.files[0]) {
if((this.files[0].size/1024) > opts.maxSize){
alert('图片大小不能超过'+opts.maxSize+'K');
return false;
}
var reader = new FileReader();
reader.onload = function (e) {
imgDiv.attr('src', e.target.result);
};
reader.readAsDataURL(this.files[0]);
setTimeout("autoScaling()", 100);
}
};
}
}
});
}
});
})(jQuery);
插件使用:
<div style="width:90px; height:110px; overflow:hidden; border:1px solid red;">
<div id="imgDiv"> </div>
</div>
<br>
<input type="file" value="上传文件">
<script>
$(document).ready(function() {
$("input").uploadPreview({ width: 90, height: 110, imgDiv: "#imgDiv"});
});
</script>
分享到:
相关推荐
jquery file上传预览本地图片支持IE6\7\8\9\10 chrome 火狐 网上有很多关于 file上传预览本地图片开源角本但都对支持到IE6\7\8,而且chrome 火狐最新版本也有问题,自己动手丰衣足食。分享给给大家。
jquery图片上传预览插件,通过 IE6、7、8、9 , chrome, firefox测试 测试时采用的是jquery1.7.1,未经过其它jquery版本测试。 使用时,您可以根据需要,随意修改! --------------------------------- =====更新...
jquery图片上传预览插件,通过 IE6、7、8、9 , chrome, firefox测试,测试时采用的是jquery1.7.1,未经过其它jquery版本测试。 使用时,您可以根据需要,随意修改!
jquery+html5实现图片上传并裁切功能,上传图片前可预览裁切效果,显示裁切框,应用jquery.Jcrop.min.js实现,兼容性方面,适用浏览器:FireFox、Chrome、Opera. 不支持IE8、360、Safari、傲游、搜狗、世界之窗。本...
它支持现代浏览器,包括Chrome、Firefox、Safari和Edge,但不包括较旧的IE版本。 以下是实现jQuery与PDF.js结合的步骤: 1. **引入库**:首先,你需要在HTML文件中引入jQuery库和PDF.js库。通常,jQuery可以从CDN...
关于浏览器兼容性,IE(尤其是低版本)、Firefox、Chrome、Safari和360浏览器等都有各自不同的实现方式和兼容性问题。例如,旧版IE可能不支持FileReader API,需要寻找替代方案,如Flash或ActiveX控件。而现代浏览器...
本教程将详细讲解如何利用jQuery实现一个图片上传时的本地预览功能,同时具备等比例缩放和文件类型判断的能力,并确保在主流浏览器如IE、Firefox和Chrome中运行良好。 首先,我们要理解`jquery 上传图片本地预览`这...
jquery图片上传预览插件,通过 IE6、7、8、9 , chrome, firefox测试,测试时采用的是jquery1.7.1,未经过其它jquery版本测试。 使用时,您可以根据需要,随意修改! PS:这个版本修改上一个版本在IE6、7下的一个...
6. **兼容性**:考虑到浏览器的多样性,tinyImgUpload尽可能地支持了各种现代浏览器,包括Chrome、Firefox、Safari、Edge以及部分旧版本的IE。同时,它利用HTML5特性,确保在支持这些特性的浏览器上能正常运行。 7....
例如,IE浏览器通常对新特性的支持较慢,而现代浏览器如Chrome和Firefox则更倾向于支持最新的Web标准。因此,为了确保在所有这些浏览器上都能正常工作,开发者可能使用了如HTML5 File API、jQuery、或者专门的多文件...
对于跨浏览器兼容性,jQuery画廊应支持主流浏览器,包括IE、Firefox、Chrome和360浏览器。这要求开发者在编写代码时考虑到不同浏览器的差异,比如对CSS3特性的支持情况,以及JavaScript语法的兼容性问题。通常,使用...
这些插件通常具有良好的浏览器兼容性,支持主流的Chrome、Firefox、Safari、Edge以及IE9+。兼容性是选择插件时的重要考量因素,确保用户在各种环境下都能顺利使用。 ### 4. 实现原理 一个基本的图片裁剪流程包括:...
4. 兼容性好:适用于各种主流浏览器,包括IE6+、Firefox、Chrome、Safari和Opera。 5. 事件触发:提供如onSelectStart、onSelectChange和onSelectEnd等事件,方便开发者在裁剪过程中执行额外的操作。 三、使用...
jquery html5实现图片上传并裁切功能,上传图片前可预览裁切效果,显示裁切框,应用jquery.Jcrop.min.js实现,兼容性方面,适用浏览器:FireFox、Chrome、Opera. 不支持IE8、360、Safari、傲游、搜狗、世界之窗。本...
6. **浏览器兼容性**:虽然jQuery已经做了很好的浏览器兼容性处理,但在实际应用中仍需测试不同浏览器下的表现,确保在IE、Firefox、Chrome等主流浏览器上都能正常工作。 总的来说,"jQuery商品放大镜预览代码.zip...
jquery html5实现图片上传并裁切功能,上传图片前可预览裁切效果,显示裁切框,应用jquery.Jcrop.min.js实现,兼容性方面,适用浏览器:FireFox、Chrome、Opera. 不支持IE8、360、Safari、傲游、搜狗、世界之窗。本...
5. **兼容性检查**:虽然大部分现代浏览器都支持上述方法,但还是需要确保代码在不同浏览器(如IE、Firefox、Chrome、Safari等)下的兼容性。 通过这种方式,我们可以利用jQuery轻松实现高质量的打印预览功能,提高...
此外,针对不同的浏览器兼容性问题,例如IE、Firefox和Google Chrome等,开发者可能需要编写特定的JavaScript代码来处理。`js 打印DIV内容 print div 兼容IE FF Google等主流浏览器 -打印指定区域内容.url`这个链接...
这款插件广泛兼容主流浏览器,包括IE8+、Firefox以及Chrome,为用户提供了便捷的文件上传体验。 SWFUpload是一款开源的Flash上传组件,它利用了Flash的异步上传能力,可以在后台无声无息地上传大文件,同时避免了...
### 图片上传前客户端预览 #### 知识点概览 本文将详细介绍如何使用JavaScript在客户端实现图片上传前的预览功能。该方法适用于多种浏览器环境,包括IE7及更高版本。通过以下知识点的学习,您将能够掌握利用HTML、...