js实现上传图片及时预览


Posted in Javascript onMay 07, 2016

本文实例为大家分享了javascript图片预览功能实现的具体代码,供大家参考,具体内容如下

先为大家分享一段关于js图片预览的代码,兼容火狐和谷歌浏览器

/* 案例展示图片预览 */
$(function(){
  $("#file0").bind("change",function(){
 
    clickupLoad();
  });
});
function clickupLoad(){
 
  var imgObject = document.getElementById('file0');
  var getImageSrc = getFullPath(imgObject); // 本地路径
  var srcs = window.URL.createObjectURL(imgObject.files[0]);
  var pos = getImageSrc.lastIndexOf(".");
  var lastname = getImageSrc.substring(pos, getImageSrc.length) // 图片后缀]
   
  if(srcs!=""){
    $("#yulan2").attr("src",srcs);
  }else{
    alert("请选择一张图片");
  }
   
}
function getFullPath(obj) {  //得到图片的完整路径
  if (obj)
  {
    if (window.navigator.userAgent.indexOf("MSIE") >= 1){
      obj.select();
      return document.selection.createRange().text;
     
    }else if(window.navigator.userAgent.indexOf("Firefox") >= 1) {
      if (obj.files) {
        return window.URL.createObjectURL(obj.files[0]);
      }
      return obj.value;
    }
    return obj.value;
  }
}

实例代码实现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 相关文章推荐
提高 DHTML 页面性能
Dec 25 Javascript
Javascript学习笔记1 数据类型
Jan 11 Javascript
JSON 数字排序多字段排序介绍
Sep 18 Javascript
JavaScript极简入门教程(三):数组
Oct 25 Javascript
AngularJS入门教程(一):静态模板
Dec 06 Javascript
JavaScript操作Cookie详解
Feb 28 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
Aug 11 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
May 10 Javascript
js修改onclick动作的四种方法(推荐)
Aug 18 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
Sep 11 Javascript
Vue Autocomplete 自动完成功能简单示例
May 25 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
May 06 Javascript
Backbone.js框架中Model与Collection的使用实例
May 07 #Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
May 07 #Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
May 07 #Javascript
JavaScript的Backbone.js框架入门学习指引
May 07 #Javascript
JavaScript数组方法总结分析
May 06 #Javascript
JS平滑无缝滚动效果的实现代码
May 06 #Javascript
使用AJAX实现Web页面进度条的实例分享
May 06 #Javascript
You might like
php 破解防盗链图片函数
2008/12/09 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
php递归实现无限分类的方法
2015/07/28 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
mvc中form表单提交的三种方式(推荐)
2016/08/10 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
微信小程序联网请求的轮播图
2017/07/07 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
Django 导出 Excel 代码的实例详解
2017/08/11 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
python匿名函数用法实例分析
2019/08/03 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
Django实现网页分页功能
2019/10/31 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
Python使用xpath实现图片爬取
2020/09/16 Python
2014年银行个人工作总结
2014/12/05 职场文书
办公室规章制度范本
2015/08/04 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers