You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript上传图片到Firebase Storage前如何将图片调整为100px*100px?

调整图片尺寸后上传Firebase Storage完整实现代码

我们通过HTML5 Canvas实现图片尺寸压缩为100px*100px后再上传,完整实现代码如下:

function uploadImage() {
  const ref = firebase.storage().ref();
  const file1 = document.querySelector("#photo").files[0];
  const metadata = {
    contentType: file1.type
  };

  // 图片尺寸调整逻辑
  const img = new Image();
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  const reader = new FileReader();

  reader.onload = function (e) {
    img.src = e.target.result;
    img.onload = function () {
      // 固定canvas尺寸为100*100
      canvas.width = 100;
      canvas.height = 100;
      // 绘制调整尺寸后的图片,如需保持原比例不拉伸可自行修改绘制坐标参数
      ctx.drawImage(img, 0, 0, 100, 100);
      
      // canvas转blob后执行上传
      canvas.toBlob(function (blob) {
        const task = ref.child(mydata.uid).put(blob, metadata);
        task
          .then(snapshot => snapshot.ref.getDownloadURL())
          .then(url => {
              db.collection('user').doc(mydata.docid).update({
                profilepic : url,
              });  
            const image = document.querySelector("#image")
            image.src = url;
            alert("uploaded")
          })
          .catch(console.error);
      }, file1.type);
    }
  }
  reader.readAsDataURL(file1);
}
  • 如需调整压缩后图片质量,可在toBlob方法第三个参数传入0-1之间的数值,例如canvas.toBlob(callback, file1.type, 0.8)代表输出80%质量的图片
  • 如需避免图片拉伸变形,可先计算原图宽高比,按比例裁剪后再绘制到canvas上

内容的提问来源于stack exchange,提问作者Spandan Manna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:48:03