0
点赞
收藏
分享

微信扫一扫

【工具】前端JS/VUE修改图片分辨率


【工具】前端JS/VUE修改图片分辨率

/**
   * 暂时用不到 直接修改图片width属性即可
   * @param blob
   * @param z最大宽度
   * @returns {Promise<unknown>}
   */
  async y压缩图片分辨率(blob, z最大宽度) {
    // 获取图片 blob

    // 把 blob 转成 Image 对象
    const imageBitmap = await createImageBitmap(blob);

    let targetWidth = imageBitmap.width;
    let targetHeight = imageBitmap.height;

    if(targetWidth <= z最大宽度){
      console.info('图片宽度小于最大宽度,无需压缩')
      return blob
    }
    console.info('图片宽度大于最大宽度,需压缩', targetWidth)
    // 如果宽度大于1200,则按比例缩放
    const scale = z最大宽度 / targetWidth;
    targetWidth = z最大宽度;
    targetHeight = Math.round(imageBitmap.height * scale);

    // 创建 Canvas 绘制缩放后的图像
    const canvas = document.createElement("canvas");
    canvas.width = targetWidth;
    canvas.height = targetHeight;

    const ctx = canvas.getContext("2d");
    ctx.drawImage(imageBitmap, 0, 0, targetWidth, targetHeight);

    // 转换为新的 Blob (JPEG/PNG均可)
    const compressedBlob = await new Promise(resolve => {
      canvas.toBlob(resolve, "image/jpeg", 0.9); // 0.9 为质量,可调整
    });

    return compressedBlob;
  }

举报

相关推荐

0 条评论