全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JS HTML图片显示Canvas 压缩功能

简单到延伸

最新需要js 文件压缩图片上传 以前没搞过,新手把学习过程分享

一.选择图片并显示

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8">
  <title>Title</title>
</head>
<body>
<input id="imginput" type="file" accept="image/*" onchange="showImg(this)">
<div id="img1">
  <canvas class="convas01"></canvas>
</div>
</body>
<script>
  window.URL=window.URL||window.webkitURL;
  var divimg1 = document.getElementById("img1");
  function showImg(obj){
    var files = obj.files;
    var img = new Image();
    img.width = 100;
    if(window.URL){
      img.src = window.URL.createObjectURL(files[0]);
    }else{
      //opera不支持createObjectURL/revokeObjectURL方法。需要用FileReader对象来处理
      var reader = new FileReader();
      reader.readAsDataURL(files[0]);
      reader.onload = function(e){
        img.src = this.result;
        img.width = 200;
        img.id="img01";
        divimg1.appendChild(img);
      }
    }
    img.id="img01";
    divimg1.appendChild(img);
  }
</script>
</html>

二.使用canvas代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8">
  <title>Title</title>
</head>
<body>
 <input id="imginput" type="file" accept="image/*" onchange="showImg(this)">
 <div id="img1">
  <canvas id="convas01"></canvas>
 </div>
</body>
 <script>
  window.URL=window.URL||window.webkitURL;
  var divimg1 = document.getElementById("img1");
  var convas = document.getElementById("convas01");
  var ht = convas01.getContext("2d");
  convas.width = 200;
  convas.height = 200;
   function showImg(obj){
     var files = obj.files;
     var img = new Image();
     img.width = 200;
    if(window.URL){
      img.src = window.URL.createObjectURL(files[0]);
      img.onload = function(e){
        window.URL.revokeObjectURL(this.src);//方便引用无效回收
        ht.clearRect(0, 0, convas.width, convas.width);//clearRect() 方法清空给定矩形内的指定像素。
        ht.drawImage(img,0,0,convas.width,convas.height);
        convas.toDataURL("image/png");
      }
    }else{
      //opera不支持createObjectURL/revokeObjectURL方法。需要用FileReader对象来处理
      var reader = new FileReader();
      reader.readAsDataURL(files[0]);
      reader.onload = function(){
        img.src = this.result;
        img.width = 200;
        img.id="img01";
        divimg1.appendChild(img);
      }
    }
   }
 </script>
</html>

 三.压缩处理

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8">
  <title>Title</title>
</head>
<body>
 <input id="imginput" type="file" accept="image/*" onchange="showImg(this)">
 <div id="img1">
   canvas图片
  <canvas id="convas01"></canvas>
 </div>
<div id="img2">
压缩图片
</div>
</body>
 <script>
  window.URL=window.URL||window.webkitURL;
  var divimg1 = document.getElementById("img1");
  var divimg2 = document.getElementById("img2");
  var convas = document.getElementById("convas01");
  var ht = convas01.getContext("2d");
  convas.width = 200;
  convas.height = 200;
   function showImg(obj){
     var files = obj.files;
     var img = new Image();
     img.width = 200;
    if(window.URL){
      img.src = window.URL.createObjectURL(files[0]);
      img.onload = function(e){
        window.URL.revokeObjectURL(this.src);//方便引用无效回收
        ht.drawImage(img,0,0,convas01.width,convas01.height);
        var imgdata = convas.toDataURL("image/png");
        //将canvas转化成Blob对象
        var imgobj = new Image();
        var blob =dataURLtoBlob(imgdata);
        var url = window.URL.createObjectURL(blob);
        imgobj.onload = function(e){
          window.URL.revokeObjectURL(this.src);
        }
        imgobj.src= url;
        divimg2.appendChild(imgobj);
      }
    }else{
      //opera不支持createObjectURL/revokeObjectURL方法。需要用FileReader对象来处理
      var reader = new FileReader();
      reader.readAsDataURL(files[0]);
      reader.onload = function(){
        img.src = this.result;
        img.width = 200;
        img.id="img01";
        divimg1.appendChild(img);
      }
    }
   }
  function dataURLtoBlob(dataurl) {
    var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
        bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
    while(n--){
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], {type:mime});
  }
 </script>
</html>

四.分辨率调节尝试

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    *{
      margin:0;padding:0;
    }
    body{
      width:100%;height:100%;background:black;
    }
    canvas{
      width:800px;height:480px;outline:1px solid pink;position:absolute;
      left:0;top:0;right:0;bottom:0;margin:auto;
    }
  </style>
</head>
<body>
<button>240x120</button>
<button>320x240</button>
<button>480x320</button>
<button>640x420</button>
<button>800x480</button>
<canvas id="canvasId" width="480" height="320">
  Your browser does not support the canvas element.
</canvas>
<script>
  var canvas = document.getElementById('canvasId');
  var context = canvas.getContext('2d');
  var btns = document.getElementsByTagName('button');
  var resolution = [
    [240, 120],
    [320, 240],
    [480, 320],
    [640, 420],
    [800, 480]
  ];
  //canvas分辨率
  var resolutionW = canvas.getAttribute('width');
  var resolutionH = canvas.getAttribute('height');
  //canvas大小
  var sizeW = canvas.offsetWidth;
  var sizeH = canvas.offsetHeight;
  console.log(resolutionW);
  console.log(resolutionH);
  console.log(sizeW);
  console.log(sizeH);
  var img = new Image();
  img.src = "http://img5.niutuku.com/phone/1301/0920/0920-niutuku.com-483082.jpg"; //这张图片像素为800x480
  img.onload = function() {
    draw(3);
    for (var i = 0; i < btns.length; i++) {
      (function(i) {
        btns[i].onclick = function() {
          draw(i);
        }
      })(i);
    }
  }
  function draw(i) {
    canvas.setAttribute('width', resolution[i][0]);
    canvas.setAttribute('height', resolution[i][1]);
    context.clearRect(0, 0, sizeW, sizeH);
    context.drawImage(img, 0, 0, sizeW, sizeH, 0, 0, resolution[i][0], resolution[i][1]);
  }
</script>
</body>
</html>

总结

以上所述是小编给大家介绍的JS HTML图片显示Canvas 压缩功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# js  # html  # canvas  # js canvas实现5张图片合成一张图片  # js canvas实现二维码和图片合成的海报  # JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析  # JS和Canvas实现图片的预览压缩和上传功能  # js HTML5 canvas绘制图片的方法  # js实现canvas图片与img图片的相互转换的示例  # js canvas实现放大镜查看图片功能  # js+html5绘制图片到canvas的方法  # javascript结合canvas实现图片旋转效果  # 使用JavaScript+canvas实现图片裁剪  # js+canvas实现两张图片合并成一张图片的方法  # 不支持  # 需要用  # 小编  # 手把  # 在此  # 这张  # 给大家  # 所述  # 给我留言  # 感谢大家  # 转化成  # 清空  # 图片上传  # 疑问请  # 有任何  # 文件压缩  # Image  # img  # files  # width 


相关文章: 建站之星如何一键生成手机站?  css网站制作参考文献有哪些,易聊怎么注册?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  建站之星在线客服如何快速接入解答?  网站专业制作公司有哪些,做一个公司网站要多少钱?  Android使用GridView实现日历的简单功能  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  如何挑选高效建站主机与优质域名?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  网站制作壁纸教程视频,电脑壁纸网站?  如何选择香港主机高效搭建外贸独立站?  表情包在线制作网站免费,表情包怎么弄?  如何通过服务器快速搭建网站?完整步骤解析  网站制作大概多少钱一个,做一个平台网站大概多少钱?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  建站主机选择指南:服务器配置与SEO优化实战技巧  Python路径拼接规范_跨平台处理说明【指导】  招商网站制作流程,网站招商广告语?  如何在云主机上快速搭建多站点网站?  寿县云建站:智能SEO优化与多行业模板快速上线指南  Android自定义listview布局实现上拉加载下拉刷新功能  如何用AWS免费套餐快速搭建高效网站?  济南企业网站制作公司,济南社保单位网上缴费步骤?  Python文件管理规范_工程实践说明【指导】  香港服务器选型指南:免备案配置与高效建站方案解析  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  网站制作公司,橙子建站是合法的吗?  定制建站价位费用解析与套餐推荐全攻略  建站之星2.7模板快速切换与批量管理功能操作指南  制作网站公司那家好,网络公司是做什么的?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  太平洋网站制作公司,网络用语太平洋是什么意思?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  建站之星24小时客服电话如何获取?  如何通过虚拟机搭建网站?详细步骤解析  如何获取PHP WAP自助建站系统源码?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  存储型VPS适合搭建中小型网站吗?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  建站之星如何实现五合一智能建站与营销推广?    唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何确保FTP站点访问权限与数据传输安全?  大型企业网站制作流程,做网站需要注册公司吗?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何快速搭建高效服务器建站系统?  如何在阿里云虚拟服务器快速搭建网站?  实例解析Array和String方法  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。