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 03 Javascript
测试JavaScript字符串处理性能的代码
Dec 07 Javascript
JavaScript面向对象设计二 构造函数模式
Dec 20 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
Nov 30 Javascript
Bootstrap作品展示站点实战项目2
Oct 14 Javascript
JS公共小方法之判断对象是否为domElement的实例
Nov 25 Javascript
Webpack devServer中的 proxy 实现跨域的解决
Jun 15 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
Aug 14 Javascript
node.js实现为PDF添加水印的示例代码
Dec 05 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
Aug 26 Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 Javascript
ES6扩展运算符和rest运算符用法实例分析
May 23 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教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
php计算一个文件大小的方法
2015/03/30 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
python控制台中实现进度条功能
2015/11/10 Python
Python之pymysql的使用小结
2019/07/01 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
Python3从零开始搭建一个语音对话机器人的实现
2019/08/23 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
装饰资料员岗位职责
2013/12/30 职场文书
发展部经理职责规定
2014/02/22 职场文书
成龙洗发水广告词
2014/03/14 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
服务明星事迹材料
2014/12/29 职场文书
任命书标准格式
2015/03/02 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
工作犯错保证书
2015/05/11 职场文书
入党后的感想
2015/08/10 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers