zoukankan      html  css  js  c++  java
  • web 图片上传实现本地预览

    前言: 

         刚成为码农不久,第一次工作中接触图片上传功能,说到图片上传,大多数程序员可能都是先上传服务器,再获取路径。如果用户多长更改图片,服务器会产生许多垃圾文件。怎样用js实现本地预览。今天特意抽空百度研究了一下。

       在说上传之前先说说如何替换or美化浏览器自带的简陋上传按钮(自定义自己的上传按钮 如:img):

      1.将自定义上传按钮上方添加 input file 框,实现input实现透明处理。

      2.对自定义上传按钮添加事件。隐藏真正input框。用事件来触发:

         function imgBtn(){

          return document.getElementById("inputid").click();   

        }

      

       现在浏览器基本都支持H5 。针对H5的代码:

     var docObj=document.getElementById("inputid");
     var imgObjPreview=document.getElementById("imgId");
     imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);
    

     针对ie的代码:

    docObj.select();
    docObj.blur();
    var localImagId = document.getElementById("divid or imgid");
    var imgSrc = docObj.createTextRange().text;
    try{		  
       localImagId.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
       localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
    }
    catch(e)
    {
       console.log(e);
       alert("您上传的图片格式不正确,请重新选择!");
       return false;
    }
    
    很多大型网站上都使用到了这个滤镜,它是IE滤镜的一种,其主要作用就是对图片进行透明处理。虽然FireFox和IE7以上的IE浏览器已经支持透明的PNG图片,但是就IE5-IE6而言还是有一定的意义。
    语法:
    filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )

    属性:
      enabled : 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false (这个基本可以忽略,被禁止了那还搞什么……)

         true :  默认值。滤镜激活。

         false :  滤镜被禁止。

    sizingMethod : 可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。(可以无视这行说明,关键是下面的参数。一般来说单独图片且精度比较高的使用scale比较合适,除非您把所有的要用到的图片都放到一张图那就当我没说过。但是那样做的话这张png图片的体积估计不会很小。另,这个滤镜只是加载,其填充方式还是可以受CSS控制的。)

         crop : 剪切图片以适应对象尺寸。

         image : 默认值。增大或减小对象的尺寸边界以适应图片的尺寸。

         scale : 缩放图片以适应对象的尺寸边界。

      src : 必选项。字符串(String)。(指定图片的路径。要注意的是这个路径是指加载滤镜的页面相对于图片的路径而不是css文件相对于图片的路径。这跟一般的图片加载有区别。)

    使用实例:
    .login_logo { 
      background-image: url(../Image/login_logo.png);
      _background-image: none;
      _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src='/Public/Image/login_logo.png');  
    }
    

      

  • 相关阅读:
    牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式
    6.3 省选模拟赛 Decompose 动态dp 树链剖分 set
    AtCoder Grand Contest 044 A Pay to Win 贪心
    5.29 省选模拟赛 树的染色 dp 最优性优化
    luogu P6097 子集卷积 FST FWT
    CF724C Ray Tracing 扩展欧几里得 平面展开
    5.30 省选模拟赛 方格操作 扫描线 特殊性质
    5.29 省选模拟赛 波波老师 SAM 线段树 单调队列 并查集
    Spring main方法中怎么调用Dao层和Service层的方法
    Bug -- WebService报错(两个类具有相同的 XML 类型名称 "{http://webService.com/}getPriceResponse"。请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称。)
  • 原文地址:https://www.cnblogs.com/hzxy-blog/p/6410204.html
Copyright © 2011-2022 走看看