js上传图片预览的实现方法


Posted in Javascript onMay 09, 2017

本文实例为大家分享了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 学习笔记(十六) js事件
Feb 01 Javascript
JavaScript实现动态创建CSS样式规则方案
Sep 06 Javascript
JavaScript电子时钟倒计时
Jan 09 Javascript
深入学习jQuery Validate表单验证(二)
Jan 18 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
Sep 17 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
Sep 19 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
Aug 28 Javascript
React styled-components设置组件属性的方法
Aug 07 Javascript
vue中Axios的封装与API接口的管理详解
Aug 09 Javascript
JS通过位运算实现权限加解密
Aug 14 Javascript
亲自动手实现vue日历控件
Jun 26 Javascript
jQuery实现鼠标滑动切换图片
May 27 jQuery
react开发中如何使用require.ensure加载es6风格的组件
May 09 #Javascript
Vue2单一事件管理组件通信
May 09 #Javascript
react-router实现按需加载
May 09 #Javascript
BootStrap表单时间选择器详解
May 09 #Javascript
兼容浏览器的js事件绑定函数(详解)
May 09 #Javascript
JS触摸与手势事件详解
May 09 #Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
May 09 #Javascript
You might like
如何用PHP实现插入排序?
2013/04/10 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
php如何获取文件的扩展名
2015/10/28 PHP
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
iconfont的三种使用方式详解
2018/08/05 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
详解JavaScript自定义函数
2020/07/29 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
python requests.get带header
2020/05/05 Python
Python打印不合法的文件名
2020/07/31 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
逻辑链路控制协议
2016/10/01 面试题
销售人员中英文自荐信
2013/09/22 职场文书
副总经理工作职责
2013/11/28 职场文书
消防先进事迹材料
2014/02/10 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python
pt-archiver 主键自增
2022/04/26 MySQL
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript