Imagemagick 无法为png文件ImageMagik设置DPI 我使用IMAGE AGEMAGIK67.8C++库来从原始图像中创建图像。问题是我无法为文件类型“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");

Imagemagick 无法为png文件ImageMagik设置DPI 我使用IMAGE AGEMAGIK67.8C++库来从原始图像中创建图像。问题是我无法为文件类型“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");,imagemagick,png,magick++,Imagemagick,Png,Magick++,如果我在call output.write中将PNG替换为JPG或TIFF,我会看到正确的DPI我们观察到的是,当我们在Photoshop或IrfanView中查看时,标题确实包含DPI信息。但是,由于未知原因,PNG和GIF格式放弃了在ms paint中不可见的像素密度。这是PNG设计的,因为该格式是无损光栅图像,并且(IMHO)在传统打印中不受预渲染方法的约束。有关更多信息,请参阅。@emcconville:虽然我怀疑这个问题与编程有关,但请务必发表相关评论。这个问题与那个页面上讨论的神话相

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

我们观察到的是,当我们在Photoshop或IrfanView中查看时,标题确实包含DPI信息。但是,由于未知原因,PNG和GIF格式放弃了在ms paint中不可见的像素密度。这是PNG设计的,因为该格式是无损光栅图像,并且(IMHO)在传统打印中不受预渲染方法的约束。有关更多信息,请参阅。@emcconville:虽然我怀疑这个问题与编程有关,但请务必发表相关评论。这个问题与那个页面上讨论的神话相反——dpi与网络无关,这是我如何解读它的。另外,
pHYs
标记是。它可能与不使用区块的ImageMagick一样简单。这是允许的,按照相同的规格。(另外,PNG是无损的这一事实与此无关。)@Jongware是的,你的权利。我被误导了&想到了屏幕打印机。创建过程中必须选择
pHYs
标记。谢谢