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中获取数据库中的值的方法
Jul 14 Javascript
使用jQuery实现的掷色子游戏动画效果
Mar 14 Javascript
jQuery多项选项卡的实现思路附样式及代码
Jun 03 Javascript
实现React单页应用的方法详解
Aug 02 Javascript
jQuery 特性操作详解及实例代码
Sep 29 Javascript
Vue集成Iframe页面的方法示例
Dec 12 Javascript
Vue.js 图标选择组件实践详解
Dec 03 Javascript
使用mixins实现elementUI表单全局验证的解决方法
Apr 02 Javascript
小程序click-scroll组件设计
Jun 18 Javascript
简述ES6新增关键字let与var的区别
Aug 23 Javascript
ZK中使用JS读取客户端txt文件内容问题
Nov 07 Javascript
微信小程序中网络请求缓存的解决方法
Dec 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基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
隐性调用php程序的方法
2015/06/13 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
详解在Python中处理异常的教程
2015/05/24 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
Python实现图片转字符画的示例代码
2017/08/21 Python
Python实现Linux监控的方法
2019/05/16 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
英语系毕业生自荐信
2013/10/31 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
学生意外伤害赔偿协议书
2014/09/17 职场文书
违纪学生保证书
2015/02/27 职场文书
公路施工安全责任书
2015/05/08 职场文书
债务纠纷起诉书
2015/05/20 职场文书
一个都不能少观后感
2015/06/04 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电