js实现上传图片及时预览


Posted in Javascript onMay 07, 2016

本文实例为大家分享了javascript图片预览功能实现的具体代码,供大家参考,具体内容如下

先为大家分享一段关于js图片预览的代码,兼容火狐和谷歌浏览器

/* 案例展示图片预览 */
$(function(){
  $("#file0").bind("change",function(){
 
    clickupLoad();
  });
});
function clickupLoad(){
 
  var imgObject = document.getElementById('file0');
  var getImageSrc = getFullPath(imgObject); // 本地路径
  var srcs = window.URL.createObjectURL(imgObject.files[0]);
  var pos = getImageSrc.lastIndexOf(".");
  var lastname = getImageSrc.substring(pos, getImageSrc.length) // 图片后缀]
   
  if(srcs!=""){
    $("#yulan2").attr("src",srcs);
  }else{
    alert("请选择一张图片");
  }
   
}
function getFullPath(obj) {  //得到图片的完整路径
  if (obj)
  {
    if (window.navigator.userAgent.indexOf("MSIE") >= 1){
      obj.select();
      return document.selection.createRange().text;
     
    }else if(window.navigator.userAgent.indexOf("Firefox") >= 1) {
      if (obj.files) {
        return window.URL.createObjectURL(obj.files[0]);
      }
      return obj.value;
    }
    return obj.value;
  }
}

实例代码实现js上传图片及时预览:

<html>
<head>   
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
<title>图片上传本地预览</title>   
<style type="text/css">
#preview{width:260px;height:190px;border:1px solid #000;overflow:hidden;}
#imghead {filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);}
</style>
<script type="text/javascript">
 
 
        //图片上传预览  IE是用了滤镜。
    function previewImage(file)
    {
     var MAXWIDTH = 260; 
     var MAXHEIGHT = 180;
     var div = document.getElementById('preview');
     if (file.files && file.files[0])
     {
       div.innerHTML ='<img id=imghead>';
       var img = document.getElementById('imghead');
       img.onload = function(){
        var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);
        img.width = rect.width;
        img.height = rect.height;
//         img.style.marginLeft = rect.left+'px';
        img.style.marginTop = rect.top+'px';
       }
       var reader = new FileReader();
       reader.onload = function(evt){img.src = evt.target.result;}
       reader.readAsDataURL(file.files[0]);
     }
     else //兼容IE
     {
      var sFilter='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="';
      file.select();
      var src = document.selection.createRange().text;
      div.innerHTML = '<img id=imghead>';
      var img = document.getElementById('imghead');
      img.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = src;
      var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);
      status =('rect:'+rect.top+','+rect.left+','+rect.width+','+rect.height);
      div.innerHTML = "<div id=divhead style='width:"+rect.width+"px;height:"+rect.height+"px;margin-top:"+rect.top+"px;"+sFilter+src+"\"'></div>";
     }
    }
    function clacImgZoomParam( maxWidth, maxHeight, width, height ){
      var param = {top:0, left:0, width:width, height:height};
      if( width>maxWidth || height>maxHeight )
      {
        rateWidth = width / maxWidth;
        rateHeight = height / maxHeight;
         
        if( rateWidth > rateHeight )
        {
          param.width = maxWidth;
          param.height = Math.round(height / rateWidth);
        }else
        {
          param.width = Math.round(width / rateHeight);
          param.height = maxHeight;
        }
      }
       
      param.left = Math.round((maxWidth - param.width) / 2);
      param.top = Math.round((maxHeight - param.height) / 2);
      return param;
    }
</script>   
</head>   
<body>
<div id="preview">
  <img id="imghead" width=100 height=100 border=0 src='<%=request.getContextPath()%>/images/defaul.jpg'>
</div>
<input type="file" onchange="previewImage(this)" />   
</body>   
</html>

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

Javascript 相关文章推荐
Web前端设计模式  制作漂亮的弹出层
Oct 29 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
Jul 20 Javascript
ExtJS的拖拽效果示例
Dec 09 Javascript
JS根据年月获得当月天数的实现代码
Jul 03 Javascript
javascript的document.referrer浏览器支持、失效情况总结
Jul 18 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
Oct 16 Javascript
javascript数据结构与算法之检索算法
Apr 04 Javascript
jQuery实现网页顶部固定导航效果代码
Dec 24 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
Apr 14 Javascript
深入理解js函数的作用域与this指向
May 28 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
Aug 19 Javascript
在vue+element ui框架里实现lodash的debounce防抖
Nov 13 Javascript
Backbone.js框架中Model与Collection的使用实例
May 07 #Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
May 07 #Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
May 07 #Javascript
JavaScript的Backbone.js框架入门学习指引
May 07 #Javascript
JavaScript数组方法总结分析
May 06 #Javascript
JS平滑无缝滚动效果的实现代码
May 06 #Javascript
使用AJAX实现Web页面进度条的实例分享
May 06 #Javascript
You might like
php全排列递归算法代码
2012/10/09 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
在Django的视图中使用form对象的方法
2015/07/18 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
Python缓存技术实现过程详解
2019/09/25 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
python中pyqtgraph知识点总结
2021/01/26 Python
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
切尔西足球俱乐部官方网上商店:Chelsea FC
2019/06/17 全球购物
应用电子技术专业个人求职信
2013/09/21 职场文书
最新计算机专业自荐信
2013/10/16 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书