【问题标题】:nodejs Sharp: transparent into whitenodejs Sharp:透明成白色
【发布时间】:2018-05-28 19:54:39
【问题描述】:

我正在使用 Nodejs Sharp 将 png 图像转码/调整大小为 jpg。有没有办法用白色(或其他浅色)而不是黑色代替透明?我找到了旧库的解决方案,但 Sharp 似乎是最快和最好的。

.background 不起作用

.then( data => Sharp(data.Body)
  .resize(SIZES[resize_type].width, SIZES[resize_type].height)
  .max()
  .withoutEnlargement()
  .background("white")
  .toFormat('jpeg')
  .toBuffer()
)

【问题讨论】:

  • 大声笑我想要相反

标签: node.js jpeg transparency sharp


【解决方案1】:

^0.23 版本上,您可以在此处使用 flatten(options) 作为 api 文档:https://sharp.readthedocs.io/en/stable/api-operation/#flatten

sharp('input.png').flatten({ background: { r: 255, g: 255, b: 255 } })

【讨论】:

  • 注意:你也可以使用.flatten({ background: '#ffffff' }) 使其变成白色。
【解决方案2】:

来自sharp documentation,因为它声明您可以使用背景进行颜色操作,并声明

默认背景是{r: 0, g: 0, b: 0, alpha: 1},黑色不透明。

所以为了变白只需使用

.background({r: 255, g: 255, b: 255, alpha: 1})

【讨论】:

    【解决方案3】:

    根据文件,我们应该按照 Msalam 建议的方式行事,但不幸的是,这还不够。我发现我们应该在 ".resize(...)" 之前添加 .flatten(true) 以使其正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 2015-04-25
      • 2015-09-05
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多