计算单色 BMP 的 BITMAPINFOHEADER biCompression 值
Posted
技术标签:
【中文标题】计算单色 BMP 的 BITMAPINFOHEADER biCompression 值【英文标题】:Computing BITMAPINFOHEADER biCompression value for monochrome BMP 【发布时间】:2009-03-02 15:05:45 【问题描述】:希望有人能给出答案,而且不会太复杂。我正在开发一个 C++ dll(没有 C# 或 .Net,完全静态的 DLL)。
无论如何,它在内置单色位图上工作。除了决议,我所有的一切都在工作。我得到设备上下文,获取兼容的设备上下文,构建位图,绘制我需要的东西(黑色/白色),并且可以保存。这一切都很好。但是,我不知道如何设置位图的分辨率。
在使用 C# 下的另一个实用程序进行一些测试时,我可以创建位图并设置分辨率。在这样做的过程中,我运行了一个例程来生成相同的文件内容,参数从 1 到 300 用于分辨率。除了“biCompression”DWORD 属性中的值外,每个图像的输出完全相同。默认是96x96的屏幕分辨率,但是对于300x300的打印机需要明显改变,甚至有些是203x203分辨率的。
【问题讨论】:
【参考方案1】:你确定吗?你观察到的行为的描述对我来说听起来很可疑,我怀疑你用来编写位图的代码或读取它们的代码。
【讨论】:
【参考方案2】:您确定不想设置biXPelsPerMeter
和biYPelsPerMeter
?这两个字段告诉您 X 和 Y 中每米有多少像素,您可以使用它们来设置 DPI。 biCompression
只处理位图的压缩类型,如RLE、JPG、PNG等。
【讨论】:
【参考方案3】:感谢您的意见,但我也会研究 biXPelsPerMeter 和 biYPels...。我会仔细检查格式,以及设置的内容......如果是这样,你可能已经对我的问题有了第二组眼睛(头脑)。
谢谢
【讨论】:
以上是关于计算单色 BMP 的 BITMAPINFOHEADER biCompression 值的主要内容,如果未能解决你的问题,请参考以下文章