【发布时间】:2017-05-09 10:43:16
【问题描述】:
我想将位图的VerticalResolution 和 HorizontalResolution 更改为固定值300。
我有一个 Windows 服务,它需要一些 TIFF 并执行一些与条形码相关的操作。除此之外,最后我从单页 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,如下面的答案所示。
【问题讨论】:
-
通过提供minimal reproducible example 向我们展示您的尝试,我们可以为您提供相应的帮助。
-
你为什么要这样做?你确定你understand what this property actually does?不管怎样,你应该可以打电话给
SetResolution。 -
原始 VerticalResolution 和 HorizontalResolution 设置为 300、300。我的代码将图像缩放到不需要的 96x96。我想解决这个问题
-
请不要调用您刚刚从“我的代码”某处复制的代码。你显然不知道这段代码做了什么,为什么它会这样做......
-
我想你们对反射有点苛刻。我遇到了类似的问题 - 感谢您提出问题反射。
标签: c# image-processing bitmap dpi