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 相关文章推荐
js中window.open()的所有参数详细解析
Jan 09 Javascript
使用jspdf生成pdf报表
Jul 03 Javascript
完善的jquery处理机制
Feb 21 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
jquery实现焦点轮播效果
Feb 23 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
vue2.0 循环遍历加载不同图片的方法
Mar 06 Javascript
layui实现点击按钮给table添加一行
Aug 10 Javascript
微信小程序日历/日期选择插件使用方法详解
Dec 28 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
Mar 06 Javascript
微信小程序实现购物车代码实例详解
Aug 29 Javascript
js+cavans实现图片滑块验证
Sep 29 Javascript
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脚本数据库功能详解(下)
2006/10/09 PHP
简体中文转换为繁体中文的PHP函数
2006/10/09 PHP
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
php class类的用法详细总结
2013/10/17 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
JavaScript 全角转半角部分
2009/10/28 Javascript
简易js代码实现计算器操作
2013/04/15 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
Python打印输出数组中全部元素
2018/03/13 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
python获取引用对象的个数方式
2019/12/20 Python
python无序链表删除重复项的方法
2020/01/17 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
Python pip 常用命令汇总
2020/10/19 Python
京剧自荐信
2014/01/26 职场文书
股东授权委托书范本
2014/09/13 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
考试作弊检讨书
2014/10/21 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
如何撰写促销方案?
2019/07/05 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android