【问题标题】:I can't convert to jpg using node sharp我无法使用 node sharp 转换为 jpg
【发布时间】:2020-01-24 23:50:47
【问题描述】:

我在 lambda 节点函数中使用尖锐节点 (https://www.npmjs.com/package/sharp) 来转换、裁剪和白色背景图像

我容忍各种输入格式,但图像输出格式应始终为 jpg。

问题是在某些情况下sharp不会将图像转换为jpg,发生时总是用png图像,它并不总是发生,另一个问题是sharp不会抛出异常,即错误是“静默”。

很遗憾我没有原图,因为我没有保存这个信息,下面是代码:

对于作物:

image.extract(offset)
    .resize(width, height)
    .toFormat('jpeg')
    .jpeg({
      quality: 100,
      chromaSubsampling: '4:4:4'
    })
    .toBuffer();

放置白色背景:

image.flatten(true)
    .resize(width, height)
    .background(backgroundColor.white)
    .embed()
    .toFormat('jpeg')
    .jpeg({
      quality: 100,
      chromaSubsampling: '4:4:4'
    })
    .toBuffer();

其他情况:

image.flatten(true)
    .resize(width, height)
    .background(backgroundColor.white)
    .toFormat('jpeg')
    .jpeg({
      quality: 100,
      chromaSubsampling: '4:4:4'
    })
    .toBuffer();

我搜索了这个问题的答案,仍然找不到,有人经历过吗?

【问题讨论】:

    标签: node.js image sharp


    【解决方案1】:

    您应该在jpeg() 选项上设置force: true。如果您不这样做,sharp 将尊重输入格式并且有效地对jpeg() 调用不做任何事情。

    例子:

    image.extract(offset)
        .resize(width, height)
        .toFormat('jpeg')
        .jpeg({
          quality: 100,
          chromaSubsampling: '4:4:4',
          force: true, // <----- add this parameter
        })
        .toBuffer();
    

    来源:https://sharp.pixelplumbing.com/en/stable/api-output/#parameters_3

    【讨论】:

      猜你喜欢
      • 2018-08-23
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 2020-02-11
      • 1970-01-01
      相关资源
      最近更新 更多