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 相关文章推荐
文本加密解密
Jun 23 Javascript
jquery插件jbox使用iframe关闭问题
Feb 09 Javascript
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
Mar 27 Javascript
js中typeof的用法汇总
Dec 12 Javascript
JavaScript实现简单图片滚动附源码下载
Jun 17 Javascript
理解javascript定时器中的单线程
Feb 23 Javascript
30分钟快速掌握Bootstrap框架
May 24 Javascript
Node.js测试中的Mock文件系统详解
Nov 21 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
Mar 09 Javascript
使用vant的地域控件追加全部选项
Nov 03 Javascript
vue项目中使用rem,在入口文件添加内容操作
Nov 11 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绘制一个扇形的方法
2015/01/24 PHP
PHP整合PayPal支付
2015/06/11 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
PHP fprintf()函数用法讲解
2019/02/16 PHP
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
基于vue.js实现图片轮播效果
2016/12/01 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
Php多进程实现代码
2018/05/07 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
对python 自定义协议的方法详解
2019/02/13 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
html5 视频播放解决方案
2016/11/06 HTML / CSS
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
机电一体化专业应届生求职信
2013/11/27 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
村庄环境整治方案
2014/05/15 职场文书
减负增效提质方案
2014/05/23 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
2015年女工委工作总结
2015/07/27 职场文书
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL