iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么使用canvas压缩图片
  • 154
分享到

怎么使用canvas压缩图片

2023-06-09 13:06:55 154人浏览 薄情痞子
摘要

今天就跟大家聊聊有关怎么使用canvas压缩图片,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先要先获取到图片文件var eleFile = docu

今天就跟大家聊聊有关怎么使用canvas压缩图片,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

首先要先获取到图片文件

var eleFile = document.querySelector('#file');  var reader = new FileReader()  eleFile.addEventListener('change', function (event) {    file = event.target.files[0];    console.log(file)    // 选择的文件是图片    if (file.type.indexOf("image") == 0) {      reader.readAsDataURL(file);        }  });

这个时候就取到了图片文件,就不得不了解一下js中FileReader对象的使用了

FileReader对象允许WEB应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容

方法:

方法名参数描述
abortnone中断读取
readAsBinaryStringfile二进制码
readAsDataURLfile将文件读取为 DataURL
readAsTextfile, [encoding]将文件读取为文本
  • readAsText:该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF-8。这个方法非常容易理解,将文件以文本方式读取,读取的结果即是这个文本文件中的内容。

  • readAsBinaryString:该方法将文件读取为二进制字符串,通常我们将它传送到后端,后端可以通过这段字符串存储文件。

  • readAsDataURL:这是例子程序中用到的方法,该方法将文件读取为一段以 data: 开头的字符串,这段字符串的实质就是 Data URL,Data URL是一种将小文件直接嵌入文档的方案。这里的小文件通常是指图像与 html 等格式的文件。(其中base64的方式就是由此来获得的。。)

FileReader处理事件简介

事件描述
onabort中断时触发
onerroronabort
onload文件读取成功完成时触发
onloadend读取完成触发,无论成功或失败
onloadstart读取开始时触发
onprogress读取中

继续上面的操作,在拿到图片之后,需要将文件进行处理转化,此时

var reader = new FileReader(); //将文件以Data URL形式读入页面   reader.readAsDataURL(file);   reader.onload=function(e) {     console.log(reader)  }

现在取到了图片也进行了转化,现在可以进行压缩了。

var eleFile = document.querySelector('#file');  var reader = new FileReader()  eleFile.addEventListener('change', function (event) {    file = event.target.files[0];    // console.log(file)    // 选择的文件是图片    if (file.type.indexOf("image") == 0) {      var reader = new FileReader();       //将文件以Data URL形式读入页面         reader.readAsDataURL(file);         reader.onload=function(e) {           // console.log(this.result)          var pre=document.getElementById("pre");           pre.setAttribute("src", this.result)          canvasDataURL(this.result, 100, 0.5)        }         }  })    function canvasDataURL(path, targetWidth, quality) {    var img = new Image();    img.src = path    img.onload = function () {        // var that = this        // console.log(that)        // 默认按比例压缩        var w = this.width        var h = this.height        scale = w / h;        w = targetWidth        h = targetWidth / scale        var quality = quality;  // 默认图片质量为0.7        //生成canvas        var canvas = document.createElement('canvas');        var ctx = canvas.getContext('2d');        // 创建属性节点        var anw = document.createAttribute("width");        anw.nodeValue = w;        var anh = document.createAttribute("height");        anh.nodeValue = h;        canvas.setAttributeNode(anw);        canvas.setAttributeNode(anh);        ctx.drawImage(this, 0, 0, w, h);        // quality值越小,所绘制出的图像越模糊        var base64 = canvas.toDataURL('image/jpeg', quality);        var result=document.getElementById("result");         result.setAttribute("src", base64)    }  }

很简单,这样就可以得到压缩后的图片了,从以上的代码可得知,原理在于canvas中的toDataURL方法可指定图片压缩后的格式及压缩质量,把canvas信息压缩并转为base64编码来实现压缩。

使用canvas制作卡片

场景:把刚刚压缩之后的图片与另一张图片相结合,可长按进行保存。

function drawCanvas (target) {    var canvas = document.querySelector('#myCanvas')    var ctx = canvas.getContext('2d')    // 是设备上物理像素和设备独立像素(device-independent pixels (dips))的比例    var dp = window.devicePixelRatio || 1    var backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1    var ratio = this.dp / this.backingStoreRatio    var oldWidth = canvas.width    var oldHeight = canvas.height    canvas.width = oldWidth * ratio    canvas.height = oldHeight * ratio    canvas.style.width = oldWidth + 'px'    canvas.style.height = oldHeight + 'px'    ctx.scale(ratio, ratio)    var headerImg = new Image()    var bgImg = new Image()    headerImg.src = target    bgImg.src = '../bg.png'    headerImg.onload = (e) => {      // 图片的宽高比      var rate = headerImg.width / headerImg.height      console.log(rate)      bgImg.onload = (e) => {        ctx.drawImage(headerImg, 10, 30, 50, (50 / rate))        // 背景图片        ctx.drawImage(bgImg, 0, 0, 150, 150)        ctx.fillText('厉害啊', 80, 70)        var resultImg = new Image()        resultImg.src = canvas.toDataURL('image/png', 1)        resultImg.style.width = '100%'        var cardImg=document.getElementById("cardImg");         cardImg.setAttribute("src", resultImg.src)      }    }

看完上述内容,你们对怎么使用canvas压缩图片有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: 怎么使用canvas压缩图片

本文链接: https://www.lsjlt.com/news/256172.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用canvas压缩图片
    今天就跟大家聊聊有关怎么使用canvas压缩图片,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先要先获取到图片文件var eleFile = docu...
    99+
    2023-06-09
  • 使用canvas怎么对图片压缩上传
    使用canvas怎么对图片压缩上传?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先得有一个上传按钮。<input type="file"&...
    99+
    2023-06-09
  • 使用canvas怎么对图片进行压缩
    本篇文章为大家展示了使用canvas怎么对图片进行压缩,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前提的函数将file文件转化为base64function changeFileToBa...
    99+
    2023-06-09
  • 怎么在html5中使用canvas压缩图片
    这期内容当中小编将会给大家带来有关怎么在html5中使用canvas压缩图片,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。知识点:canvas 的 toDataURL('image/png'...
    99+
    2023-06-09
  • 怎么使用Canvas drawImage方法实现图片压缩
    使用Canvas的drawImage方法可以实现图片的压缩。下面是一个简单的示例代码: // 获取原始的图片对象 var img =...
    99+
    2024-03-02
    Canvas
  • 怎么用HTML5的canvas实现图片压缩
    本篇内容主要讲解“怎么用HTML5的canvas实现图片压缩”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用HTML5的canvas实现图片压缩”吧!代码如...
    99+
    2024-04-02
  • Vue使用canvas实现图片压缩上传
    本文实例为大家分享了Vue使用canvas实现图片压缩上传的具体代码,供大家参考,具体内容如下 场景:如用户头像等 对于大尺寸图片的上传,在前端进行压缩除了省流量外,最大的意义是极大...
    99+
    2024-04-02
  • Canvas如何实现图片压缩
    这篇文章主要介绍Canvas如何实现图片压缩,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Canvas图片压缩流程接下来我将以具体实例为大家讲解Canvas图片压缩的具体流程。一、本...
    99+
    2024-04-02
  • 怎么用JS压缩图片
    本篇内容主要讲解“怎么用JS压缩图片”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JS压缩图片”吧!转化关系在实际应用中有可能使用的情境:大多时候我们直接...
    99+
    2024-04-02
  • 如何利用canvas实现图片压缩功能
    小编给大家分享一下如何利用canvas实现图片压缩功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!项目中做身份证识别时,需要传送图片的 base64 格式编码,...
    99+
    2023-06-09
  • 如何使用Node.js压缩图片
    这篇文章主要讲解了“如何使用Node.js压缩图片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Node.js压缩图片”吧!一、内容简介前段时间开发...
    99+
    2024-04-02
  • 图片上传及canvas压缩的示例分析
    小编给大家分享一下图片上传及canvas压缩的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我们通常在做图片上传的时候都会遇上这样的情况,一是后端接口限制...
    99+
    2023-06-09
  • php 图片压缩
    public function compressedImage($imgsrc, $imgdst) { list($width, $height, $type) = getimagesize($imgsr...
    99+
    2023-08-30
    前端 javascript html
  • java图片压缩
    1背景 查看各种文章,发现thumbnailator的压缩率和压缩效果都不错,thumbnailator又是使用java实现的,所以直接扒源码,找到了里面实现压缩的关键代码,封装成一个压缩工具类,有需...
    99+
    2023-08-31
    java 图像处理
  • Android图片压缩(质量压缩和尺寸压缩)
    在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩);质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手机拍照都能达到3M左右了,尺寸压缩一般可...
    99+
    2023-05-31
    android 图片压缩 roi
  • 怎么利用Node进行图片压缩
    怎么利用Node进行图片压缩?下面本篇文章以PNG图片为例给大家介绍一下进行图片压缩的方法,希望对大家有所帮助!最近要搞图像处理服务,其中一个是要实现图片压缩功能。以前前端开发的时候只要利用canvas现成的API处理下就能实现,后端可能也...
    99+
    2023-05-14
    图片压缩 Node.js
  • 怎么用html5的canvas移动浏览器实现图片压缩上传
    这篇文章主要介绍“怎么用html5的canvas移动浏览器实现图片压缩上传”,在日常操作中,相信很多人在怎么用html5的canvas移动浏览器实现图片压缩上传问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • JS+HTML图片显示Canvas压缩功能的方法
    这篇文章主要介绍了JS+HTML图片显示Canvas压缩功能的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一.选择图片并显示<!...
    99+
    2024-04-02
  • 怎么使用python对图片进行批量压缩
    本篇内容主要讲解“怎么使用python对图片进行批量压缩”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用python对图片进行批量压缩”吧!使用Python和Pillow模块压缩图片Pil...
    99+
    2023-07-02
  • 教你用Python压缩图片
    质量、速度、廉价,选择其中两个 如果需要做图片识别那么必定需要大量的训练素材,我们通常使用爬虫来获取,python爬取bing图片,python爬取百度图片,但是怕取下来的图片大小不一,再进行训练之前必须进行裁剪和压缩,今天就来讲一讲...
    99+
    2023-01-31
    教你用 图片 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作