【发布时间】: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++