Canvas 压缩图片

本文介绍了如何使用Canvas进行图片压缩。无论是base64还是file类型的图片,在前端都可以通过Canvas进行压缩,最后通常将压缩后的图片以file形式发送给后端。压缩原理是先将图片在Canvas上绘制,然后从Canvas获取base64(如果需要)或直接转换为file。
摘要由CSDN通过智能技术生成

1、场景
我们上传图片时,图片如果过大,耗费流量,会要求前端压缩,正常的我们选择好图片时,会拿到这种图片类型,一种是base64,一种是file,我们是不管是那种,最终传给后端的话,一般都会是流,因为base64字符太长了,一般不建议使用。

原理就是拿到图片绘制在canvas上,然后canvas转换为base64的图片(如果需要base64,后面不用再转为file),然后在转换成file返回

第一种,file压缩之后为file

/**
 * 图片压缩
 */
export function picReduce({
  file=null,
  cb = null,
}) {


  if(file){

    const canvas = document.createElement('canvas');
    const ctx = canvas.getContext('2d');
  // 先new一个img和fileReader的实例
  const img = new Image()
  const reader = new FileReader()// 读取文件资源
  reader.readAsDataURL(file) 
  let maxWidth = 1024  //img.naturalWidth/5
  let maxHeight = 768 //img.naturalHeight/5
  
  reader.onload = function(e){ 
   console.log(e)
   img.src = e.target.result
   
    img.onload = function () { //一定的加这句话,不然上传较慢的话,是获取不到图片的大小的&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值