最近nodejs中使用Jimp处理图片时候发现一个问题,如图
出现这个问题是因为要进行处理的图片尺寸太大了,我看了下我的图片尺寸,手机直接传输的图片,高达5M
找了好久没有解决方案,因为这个问题可能是个BUG,有大神会选择进行重试,如下。
async function retryResize(options, retries = 0) {
let { imagePath, size, quality = 60, maxRetries = 5 } = options;
let image = null;
try {
image = await Jimp.read(imagePath);
await image.resize(size, Jimp.AUTO);
await image.quality(quality);
} catch (e) {
if (retries >= maxRetries) {
throw e;
}
image = await retryResize(options, retries++);
}
return image;
}
但是重试的结果还是会不断报错,也有可能会成功,但是还是会失败。所以只能建议,先将图片压缩,然后再进行resize或crop,代码如下
Jimp.read(pathImageTemp).then(image => {
image.autocrop({
tolerance: 0.1,
cropOnlyFrames: false,
leaveBorder: 10
})
.writeAsync(pathImageTemp2)
.then(() => {
[...]