我想将位图的VerticalResolution
和HorizontalResolution更改为固定值300
。
我有一个Windows服务需要一些TIFF并执行一些与条形码相关的操作。除此之外,我还从单页创建了一个多页TIFF。
问题是原始DPI总是300,结果有96 DPI。
即使分辨率相同且文件大小未受影响(考虑到其他页面),这似乎是唯一相关的区别。
这是相关的,因为我在每个文件中都需要300 DPI。
这是我认为原因所在的代码,取自此处:https://www.codeproject.com/Articles/16904/Save-images-into-a-multi-page-TIFF-file-or-add-ima
private Bitmap ConvertToBitonal(Bitmap original)
{
Bitmap source = null;
// If original bitmap is not already in 32 BPP, ARGB format, then convert
if (original.PixelFormat != PixelFormat.Format32bppArgb)
{
source = new Bitmap(original.Width, original.Height, PixelFormat.Format32bppArgb);
source.SetResolution(original.HorizontalResolution, original.VerticalResolution);
using (Graphics g = Graphics.FromImage(source))
{
g.DrawImageUnscaled(original, 0, 0);
}
}
else
{
source = original;
}
// some stuff here
// Create destination bitmap
Bitmap destination = new Bitmap(source.Width, source.Height, PixelFormat.Format1bppIndexed);
// other stuff
}
调试它,我在说明之前看到了:
Bitmap destination = new Bitmap(source.Width, source.Height, PixelFormat.Format1bppIndexed);
位图具有VerticalResolution 300和HorizontalResolution 300。 之后变为96x96。
如何更改这些图像属性以获得具有300 DPI的图像?
使用SetResolution方法设置原始Xdpi和Ydpi,新Bitmap对象的默认DPI为96x96,如下面的答案所示。
答案 0 :(得分:2)
代码创建一个位图目标。 Bitmap的分辨率默认为96dpi x 96 dpi。由于未设置其他分辨率,因此输出文件具有默认分辨率...
您的问题的答案可以在参考手册中找到。
https://msdn.microsoft.com/en-us/library/system.drawing.bitmap(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/system.drawing.bitmap.setresolution(v=vs.110).aspx
public void SetResolution(
float xDpi,
float yDpi
)
设置此位图的分辨率。
如果您理解从某处复制的代码,您会意识到您已经在您面前找到了问题的答案......
source.SetResolution(original.HorizontalResolution, original.VerticalResolution);