【问题标题】:Unable to Set DPI for png files ImageMagik无法为 png 文件 ImageMagick 设置 DPI
【发布时间】:2015-12-27 21:24:29
【问题描述】:

我正在使用 ImageMagik 6.7.8 c++ 库从原始图像创建图像。问题是我无法为文件类型 "png" 设置 DPI。而它与 jpeg,tiff 完美结合。以下是示例代码

Magick::Image output;
Magick::Blob outputBlob;
output.read(geometry->getWidth(), geometry->getHeight(), "RGBA", Magick::CharPixel, buffer.get()); // Buffer is the raw image
output.resolutionUnits(PixelsPerInchResolution);
const Magick::Geometry gm(150,150);
output.density(gm);
// Write final
output.write(&outputBlob, "PNG");

如果我在调用 output.write 中将 PNG 替换为 JPG 或 TIFF,我会看到正确的 DPI

【问题讨论】:

  • 像素密度被 PNG 和 GIF 格式丢弃。这是 PNG 设计的,因为这种格式是无损光栅图像,并且(恕我直言)在传统打印中不会受到预渲染方法的影响。有关更多信息,请参阅Myths of DPI
  • @emcconville:虽然我怀疑这个问题是关于programming,但请务必制作相关的cmets。这个问题与该页面上讨论的神话相反-dpi与网络无关,这就是我阅读它的方式。此外,pHYs 标签是part of the official specifications。它可能就像 ImageMagick 不使用块一样简单。这是允许的,按照相同的规范。 (此外,PNG 是无损的这一事实与此无关。)
  • @Jongware 是的,你的权利。我被误导并考虑丝网印刷机。 pHYs 标签必须在创建期间选择加入。谢谢

标签: imagemagick png magick++


【解决方案1】:

我们观察到,当我们在 Photoshop 或 IrfanView 中查看时,标题确实包含 DPI 信息。但是由于未知原因,它在 ms paint 中不可见

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多