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的面向对象(一)
Nov 09 Javascript
获取JavaScript用户自定义类的类名称的代码
Mar 08 Javascript
Cookie 小记
Apr 01 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
Apr 02 Javascript
js substring从右边获取指定长度字符串(示例代码)
Dec 23 Javascript
JavaScript中number转换成string介绍
Dec 31 Javascript
jQuery实现点击小图显示大图代码分享
Aug 25 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
Oct 24 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
Jan 28 Javascript
JS框架之vue.js(深入三:组件1)
Sep 29 Javascript
js原生实现FastClick事件的实例
Nov 20 Javascript
vue+element ui实现锚点定位
Jun 29 Vue.js
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 面向对象的一个例子
2011/04/12 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
thinkphp浏览历史功能实现方法
2014/10/29 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
javascript 学习之旅 (3)
2009/02/05 Javascript
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
浅谈javascript中new操作符的原理
2016/06/07 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
python网络爬虫学习笔记(1)
2018/04/09 Python
python:print格式化输出到文件的实例
2018/05/14 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
Python自动重新加载模块详解(autoreload module)
2020/04/01 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
汽车运用工程毕业生自荐信
2013/10/29 职场文书
银行实习的自我鉴定
2013/12/10 职场文书
仓库文员岗位职责
2014/04/06 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
k-means & DBSCAN 总结
2021/04/27 Python