如何在 Javascript 中设置 JPEG/PNG 图像的分辨率/密度?

and*_*dre 4 javascript jpeg resolution image node.js

我需要在 javascript 中更改 JPG/PNG 类型图像的分辨率/密度。我需要这样做的原因是我可以将图像发送到第三方 API,然后第三方 API 将根据分辨率/密度元数据知道每英寸有多少像素 (DPI/PPI) 进行打印。

javascript中有没有这样的解决方案?

and*_*dre 5

对于任何对解决方案感到好奇的人,我最终使用了graphicMagic(Image Magick 的节点版本)。因为我使用的是 AWS Lambda(其实例预装了 ImageMagic),所以它更容易,我只需要安装“gm”npm 包。

它不是最高效的解决方案,因为我必须在重新采样后调整大小,但它有效!

const gm = require('gm').subClass({imageMagick: true});

function addResolution(inputBuffer, resizeWidth, resizeHeight) {
  return new Promise((resolve, reject) =>{

    gm(inputBuffer)
    .resample(150, 150) // resampled to 150 resolution
    // you have to set the width and height again because resample rearranges those params
    .resize(resizeWidth, resizeHeight, '!')
    .toBuffer('JPEG',function (err, buffer) {
      if (err) reject(err)
      resolve(buffer)
    })
  })
}
Run Code Online (Sandbox Code Playgroud)


And*_*zzi 5

您还可以使用这个最近发布的库,它只对 JPEG ( JFIF ) 和 PNG 进行 dpi 操作

https://github.com/shutterstock/changeDPI

  • 在尝试将changeDPI和其他内容转换为在节点(不仅仅是浏览器)中工作后,我发现https://www.npmjs.com/package/png-dpi-reader-writer可以工作。 (2认同)