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

如何用Jimp自定义质量保存JPEG?遇leftHalf.quality不是函数错误

解决Jimp@1.6.0调用quality报错问题

问题原因

Jimp@1.6.0的crop方法不支持传入{x,y,w,h}格式的配置对象,必须传入四个独立的位置参数;同时你之前的写法可能因crop未正确执行,导致后续实例方法调用异常。

修正方案

  1. 将crop的调用改为传入四个独立参数:x、y、裁剪宽度、裁剪高度
  2. 利用Jimp的链式调用特性,直接在crop后调用quality()设置压缩质量,再通过write()保存(Jimp的write支持async/await,无需手动包裹Promise)

修正后的完整代码

const buffer = Buffer.from(decodedData, 'base64')

const image = await Jimp.read(buffer)

const width = image.width
const height = image.height
const splitPoint = Math.floor(width / 2)

// 修正crop参数为四个独立值
const leftHalf = image.clone().crop(0, 0, splitPoint, height)
const rightHalf = image.clone().crop(splitPoint, 0, width - splitPoint, height)

// 原保存逻辑
await leftHalf.write('leftHalf.jpg')
await rightHalf.write('rightHalf.jpg')

// 降低质量保存
await leftHalf.quality(70).write('leftHalf2.jpg')
await rightHalf.quality(70).write('rightHalf2.jpg')

补充说明

  • quality()方法仅对JPEG和WEBP格式图片生效,你的图片为JPEG,符合使用条件
  • 确保所有Jimp方法调用的参数符合1.6.0版本的API规范,2.x版本的部分特性(如对象参数的crop)在1.6.0中不兼容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:47:22