jQuery实现本地预览上传图片功能_jquery

本文实例介绍了基于JQUERY扩展,图片上传预览插件,目前兼容浏览器(IE 谷歌 火狐) 不支持safari,分享给大家供大家参考,具体内容如下

HTML代码:

<html>
<head>
<title>图片上传预览演示</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="16/uploadPreview.js" type="text/javascript"></script>
<script>
$(function () {
$("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120 });
});
</script>
</head>
<body>
<div style="width:500px;margin:0px auto;"><h2>图片上传预览演示</h2>
<a href="# target="_blank">原文</a>

<div><img id="ImgPr" width="120" height="120" /></div>
<input type="file" id="up" />
</div>

</body>
</html>

js代码:

*参数说明: Img:图片ID;Width:预览宽度;Height:预览高度;ImgType:支持文件类型;Callback:选择文件显示图片后回调方法;
*使用方法:
<div>
<img id="ImgPr" width="120" height="120" /></div>
<input type="file" id="up" />
把需要进行预览的IMG标签外 套一个DIV 然后给上传控件ID给予uploadPreview事件
$("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120, ImgType: ["gif", "jpeg", "jpg", "bmp", "png"], Callback: function () { }});
*/
jQuery.fn.extend({
uploadPreview: function (opts) {
var _self = this,
_this = $(this);
opts = jQuery.extend({
Img: "ImgPr",
Width: 100,
Height: 100,
ImgType: ["gif", "jpeg", "jpg", "bmp", "png"],
Callback: function () {}
}, opts || {});
_self.getObjectURL = function (file) {
var url = null;
if (window.createObjectURL != undefined) {
url = window.createObjectURL(file)
} else if (window.URL != undefined) {
url = window.URL.createObjectURL(file)
} else if (window.webkitURL != undefined) {
url = window.webkitURL.createObjectURL(file)
}
return url
};
_this.change(function () {
if (this.value) {
if (!RegExp("\.(" + opts.ImgType.join("|") + ")$", "i").test(this.value.toLowerCase())) {
alert("选择文件错误,图片类型必须是" + opts.ImgType.join(",") + "中的一种");
this.value = "";
return false
}
if ($.browser.msie) {
try {
$("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))
} catch (e) {
var src = "";
var obj = $("#" + opts.Img);
var div = obj.parent("div")[0];
_self.select();
if (top != self) {
window.parent.document.body.focus()
} else {
_self.blur()
}
src = document.selection.createRange().text;
document.selection.empty();
obj.hide();
obj.parent("div").css({
'filter': 'progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)',
'width': opts.Width + 'px',
'height': opts.Height + 'px'
});
div.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = src
}
} else {
$("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))
}
opts.Callback()
}
})
}
});

直接上第二段代码,jquery js实现上传图片之前预览本地图片

<style type="text/css">
#preview_wrapper{
  display:inline-block;
  width:300px;
  height:300px;
  background-color:#CCC;
}
#preview_fake{
  filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);
}
#preview_size_fake{
  filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);
  visibility:hidden;
}
#preview{
  width:300px;
  height:300px;
}
</style>

<script type="text/javascript">
function onUploadImgChange(sender){
  if( !sender.value.match( /.jpg|.gif|.png|.bmp/i ) ){
    alert('图片格式无效!');
    return false;
  }
  var objPreview = document.getElementByIdx_x('preview');
  var objPreviewFake = document.getElementByIdx_x('preview_fake');
  var objPreviewSizeFake = document.getElementByIdx_x('preview_size_fake');
  if( sender.files && sender.files[0] ){
    objPreview.style.display = 'block';
    objPreview.style.width = 'auto';
    objPreview.style.height = 'auto';  

    // Firefox 因安全性问题已无法直接通过 input[file].value 获取完整的文件路径
    objPreview.src = sender.files[0].getAsDataURL();
  }else if( objPreviewFake.filters ){
    // IE7,IE8 在设置本地图片地址为 img.src 时出现莫名其妙的后果
    //(相同环境有时能显示,有时不显示),因此只能用滤镜来解决  

    // IE7, IE8因安全性问题已无法直接通过 input[file].value 获取完整的文件路径
    sender.select();
    var imgSrc = document.selection.createRange().text;  

    objPreviewFake.filters.item(
      'DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;
    objPreviewSizeFake.filters.item(
      'DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;  

    autoSizePreview( objPreviewFake,
      objPreviewSizeFake.offsetWidth, objPreviewSizeFake.offsetHeight );
    objPreview.style.display = 'none';
  }
}  

function onPreviewLoad(sender){
  autoSizePreview( sender, sender.offsetWidth, sender.offsetHeight );
}  

function autoSizePreview( objPre, originalWidth, originalHeight ){
  var zoomParam = clacImgZoomParam( 300, 300, originalWidth, originalHeight );
  objPre.style.width = zoomParam.width + 'px';
  objPre.style.height = zoomParam.height + 'px';
  objPre.style.marginTop = zoomParam.top + 'px';
  objPre.style.marginLeft = zoomParam.left + 'px';
}  

function clacImgZoomParam( maxWidth, maxHeight, width, height ){
  var param = { width:width, height:height, top:0, left:0 };  

  if( width>maxWidth || height>maxHeight ){
    rateWidth = width / maxWidth;
    rateHeight = height / maxHeight;  

    if( rateWidth > rateHeight ){
      param.width = maxWidth;
      param.height = height / rateWidth;
    }else{
      param.width = width / rateHeight;
      param.height = maxHeight;
    }
  }  

  param.left = (maxWidth - param.width) / 2;
  param.top = (maxHeight - param.height) / 2;  

  return param;
}
</script>

<input name="localfile" type="file" id="localfile" size="28" onchange="onUploadImgChange(this)"/>

<!--以下是预览图片用的-->
<div id="preview_wrapper">
<div id="preview_fake">
<img id="preview" src="" onload="onPreviewLoad(this)"/>
</div>
</div>
<br/>
<img id="preview_size_fake" />

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jquery
, 上传图片
本地预览
jquery上传图片并预览、jquery上传图片预览、jquery上传预览插件、jquery多图上传预览、jquery多图片上传预览,以便于您获取更多的相关知识。

时间: 2024-10-02 23:07:52

jQuery实现本地预览上传图片功能_jquery的相关文章

基于jquery实现图片上传本地预览功能_jquery

当我们在上传文件时如果每次都要上传到服务器才可以预览这个做看上合理其实是不合理的,如果网速慢或图片有问题,这样不但浪费客户时间同时也浪费服务器资源了,下面我们介绍利用js上传图片时本地实现预览,希望此方法对各位有所帮助哦.一.原理 分为两步: 当上传图片的input被触发并选择本地图片之后获取要上传的图片这个对象的URL(对象URL): 把对象URL赋值给事先写好的img标签的src属性即可把图片显示出来. 在这里,我们需要了解Javascript里File对象.Blob对象和window.UR

jquery实现兼容浏览器的图片上传本地预览功能_jquery

一.图片上传实现本地预览 由于上传图片功能,现在大多数都需要在本地实现预览,为了能够更好的让用户体验到效果,实现成品的证明,需要兼容好几种浏览器,所有通过各个例子整合了这个例子插件,兼容火狐.谷歌.ie8,其他的没有进行测试过 复制代码 代码如下: (function($){ jQuery.fn.extend({ uploadPreview: function(opts){ opts = jQuery.extend({ width: 0, height: 0, imgPreview: null,

jquery实现图片上传前本地预览功能_jquery

本文实例为大家分享了jquery实现图片上传前预览的具体代码,供大家参考,具体内容如下 介绍之前有一个小问题,一直找不到图片预览时,图片不出来的原因,原来在于图片的路径!!!一直写的是图片的本地路径,没有什么用.直接上代码. html部分: 复制代码 代码如下: <img id="pic" src="" > <input id="upload" name="file" accept="image/*

jquery实现上传图片本地预览效果

原理 分为两步:当上传图片的input被触发并选择本地图片之后获取要上传的图片这个对象的URL(对象URL):把对象URL赋值给事先写好的img标签的src属性即可把图片显示出来. 在这里,我们需要了解Javascript里File对象.Blob对象和window.URL.createObjectURL()方法. File对象 File对象可以用来获取某个文件的信息,还可以用来读取这个文件的内容.通常情况下,File对象是来自用户在一个input元素上选择文件后返回的FileList对象,也可以

jquery.imgareaselect实现图片的本地预览和选择截取实现代码

第一还是要引用jquery,接着引用下载好的 jquery.imgareaselect.pack.js 文件和 imgareaselect-default.css 样式文件. 接着写一些元素标签  代码如下 复制代码  <img id="ferret" src="" alt="It's coming right for us!" title="It's coming right for us!"         styl

jquery实现图片上传之前预览的方法_jquery

本文实例讲述了jquery实现图片上传之前预览的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

jquery 图片上传本地预览效果代码

 代码如下 复制代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.111cn.net /1999/xhtml" > <head>     <meta http-

Flash图片批量本地预览与上传实例

一直以来都梦想着做一个flash的东西出来,一直都没敢去尝试. 以前一段时间由于项目的需要,曾经对百度ueditor里的flash图片上传非常痴迷. 现在的情况可能很少遇到要使用flash的机会,但这依然打消不了我追求flash的热情. 这次这个效果一切以简单为主,一是因为没什么时间,而是as3技术水平决定了. 这次主要实现了以下几个功能: 1.本地批量预览 本地预览是flash9及as3开始提供的新功能,这也成为了它的一大特色,通过将读取的本地图片二进制话,从而实现了在flash上的图片预览效

Word2013怎么取消启用实时预览的功能呢?

  "实时预览"是指在文件处理过程当中,当鼠标悬停在不同功能选项上时显示该功能的文档效果预览.那么,Word2013怎么取消启用实时预览的功能呢?下面我们一起来看看吧! 步骤 一.在电脑桌面的Word2013文档程序图标上双击鼠标左键,将其打开运行.点击"空白文档"选项,新建一个空白文档.如图所示; 二.在打开的Word2013文档窗口中,点击左上角的"文件"命令选项.如图所示; 三.在打开的"文件"命令窗口中,点击"