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

如何在JavaScript中将PNG blob转换为JPG blob?

PNG Blob转JPG Blob实现方案

场景1:浏览器端实现

通过canvas画布中转实现格式转换,步骤如下:

  • 先将PNG资源(base64或Blob)加载为Image对象
  • 图片加载完成后绘制到同等尺寸的canvas上
  • 调用canvas的toBlob方法指定MIME类型为image/jpeg导出即可

代码示例:

// 替换为你的PNG base64数据
const pngBase64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAAK2CAYAAAAxAIToAAAAAXNSR0IArs4c6QAAIABJREFUeF7s......';

const img = new Image();
img.crossOrigin = 'anonymous';
img.onload = () => {
  // 初始化canvas尺寸和图片一致
  const canvas = document.createElement('canvas');
  canvas.width = img.width;
  canvas.height = img.height;
  const ctx = canvas.getContext('2d');
  // 绘制图片到canvas
  ctx.drawImage(img, 0, 0);
  // 导出JPG Blob,第三个参数为导出质量,取值0-1,数值越大画质越高、文件越大
  canvas.toBlob((jpgBlob) => {
    // 此处的jpgBlob就是转换完成的JPG格式Blob
    console.log(jpgBlob);
  }, 'image/jpeg', 0.9);
};
img.src = pngBase64;

// 如果原始是PNG Blob而非base64,用下面这行替换img.src的赋值即可
// img.src = URL.createObjectURL(pngBlob);

场景2:Node.js服务端实现

推荐用sharp图像处理库完成转换,性能更高:

const sharp = require('sharp');

// 处理base64格式的PNG资源
const pngBase64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAAK2CAYAAAAxAIToAAAAAXNSR0IArs4c6QAAIABJREFUeF7s......';
// 提取base64编码部分转为Buffer
const pngBuffer = Buffer.from(pngBase64.split(',')[1], 'base64');

sharp(pngBuffer)
  // 指定JPG输出质量0-100
  .jpeg({ quality: 90 })
  .toBuffer()
  .then(jpgBuffer => {
    // Node.js 18及以上版本原生支持Blob构造函数,低版本可根据需求转base64使用
    const jpgBlob = new Blob([jpgBuffer], { type: 'image/jpeg' });
    console.log(jpgBlob);
  });

内容的提问来源于stack exchange,提问作者lewis machilika

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:15:10