美文网首页
base64显示图片

base64显示图片

作者: 江火渔枫 | 来源:发表于2015-12-22 15:48 被阅读231次

<!DOCTYPE html>
<html lang="en">
<head>
<title> </title>
<script type="text/javascript" src="js/jquery.min.js"></script>
</head>
<body>
请选取一个图像文件: <input type = "file" id = "file" name = "file" />
<div id = "result"> </div>
</body>
</html>

 <script type = "text/javascript" >
              /*
              uploadBtn: string 点击上传的input按钮的id
              返回图片通过base64转换后的url
              */
               $("#file").on("change",function(e){
                    var file = e.target.files[0];
                    if (file) {
                      var reader = new FileReader();
                      reader.onabort = function ( event ) {console.log("中断")};
                      reader.onerror = function ( event ) {console.log("出错")};
                      reader.onloadstart = function ( event ) {console.log("开始")};
                      reader.onprogress = function ( event ) {console.log("正在读取")};
                      reader.onload = function ( event ) {console.log("成功读取")};
                      reader.onloadend = function ( event ) {console.log("读取完成,无论成功失败")}
                      
                      reader.onload = function ( event ) {
                        var txt = event.target.result;
                        $("#result").html(txt);
<pre class=”brush: java; gutter: true;”>

$("#result").append('<img src="'+txt+'">');
</pre>
                      $("#result").append('\<\img \src="'+txt+'"\>\');

                        return event.target.result;
                      };
                    }
                    reader.readAsDataURL( file );
                })
</script>

兼容ie的写法 (还没有整理)

 function PreviewImg(el,previewEl,opts){
      this.$el=$(el);
      this.$previewEl=$(previewEl);

      //上传图片触发change事件,改变this指向
      var that=this;
      this.$el.change(function(){
        $.proxy(that.preview(this),that)    
      })


      this.opts=$.extend({},PreviewImg.DEFAULTS,opts)

    }

    //预览图片
    PreviewImg.prototype.preview=function(file){
      var objthis=this;
      var maxWidth  =objthis.opts.maxWidth; 
      var maxHeight = objthis.opts.maxHeight;
      var $previewEl = objthis.$previewEl;
      $previewEl.html('<img id=preImg>')
      var img = $('#preImg').get(0);
      if (file.files && file.files[0])
      {
        img.onload = function(){
         var rect = objthis._cutImg(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 
     {
      var sFilter='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="';
        file.select();
        var src = document.selection.createRange().text;       
        img.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = src;
        var rect = objthis._cutImg(maxWidth, maxHeight, img.offsetWidth, img.offsetHeight);
        $previewEl.html("<div id=divhead style='width:"+rect.width+"px;height:"+rect.height+"px;margin-left:"+rect.left+"px;margin-top:"+rect.top+"px;"+sFilter+src+"\"'></div>");
      }
    }


    //裁剪图片,等比缩放尺寸
    PreviewImg.prototype._cutImg=function(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;
  }


  //默认参数,预览图片的宽高限制
  PreviewImg.DEFAULTS={
    maxHeight:190,
    maxWidth:260
  }


相关文章

网友评论

      本文标题:base64显示图片

      本文链接:https://www.haomeiwen.com/subject/rttvhttx.html