C#的Bitmap如何控制长宽?

ladofwind 2010-04-02 01:57:45
((Bitmap)this.images[0]).Save(filename, info, ep);
Bitmap bmpSource = new Bitmap(filename);

float fSourceHorResolution = bmpSource.HorizontalResolution;
float fSourceVerResolution = bmpSource.VerticalResolution;
//图象dpi
float fTargetHorResolution = 200;
float fTargetVerResolution = 200;
Bitmap bmpTarget = new Bitmap(1754, 2338);//此处是像素,我需要是210*297mm的A4纸大小.并无提供方法.
Graphics g = Graphics.FromImage(bmpTarget);
g.DrawImage(bmpSource, 0, 0, iSourceWidth, iSourceHeight);
bmpTarget.SetResolution(fTargetHorResolution, fTargetVerResolution);

bmpTarget.Save("C:\\test.tif");
...全文
1073 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙宜坡 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ladofwind 的回复:]
如何转呢? mm转pixel的算法
[/Quote]

Pixel To mm 不能够精确,只能大概,与实际的硬件环境有关吧。
persuit666 2010-04-02
  • 打赏
  • 举报
回复
像素和mm目前无法精确转换,因为像素的值是相对的,是由显示器的分辨率和显示器的大小决定的。
不过对于固定的机子来说,通过计算是可以回答的。
打开画图工具(每台计算机上都有,像一个笔筒的,笔筒里有好几支画笔,那个就是),打开后,点菜单栏上的“图像”,在下拉菜单里选择“属性”,在宽和高的输入框里分别敲入100,默认情况下这是像素。然后再点“厘米”前面的小圆点,即把100像素用厘米来表示,你看到了吧,然后再把看到的数的小数点向左移动一位,假如你看到的数是3.13,小数点左移一位后便是0.313了,也就是说,当前在你的显示器上,1像素约等于0.313毫米。


这是我们借助画图工具进行像素与毫米的换算。如果敲入的数字越大,比如是1000或10000,则得到的结果就越精确。不过,小数点左移应该是两位或三位了。如果你把分辨率的设置改动一下,然后按照上面的换算方法再试一次,你还会得到另外一种结果。


ladofwind 2010-04-02
  • 打赏
  • 举报
回复
如何转呢? mm转pixel的算法
chenhong0716 2010-04-02
  • 打赏
  • 举报
回复
image = new Bitmap(cam.Width, cam.Height, cam.Stride, PixelFormat.Format24bppRgb, ip);
龙宜坡 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 ladofwind 的回复:]
Bitmap bmpTarget = new Bitmap(1754, 2338);//此处是像素,我需要是210*297mm的A4纸大小.并无提供方法.
[/Quote]

记得只有象素单位,没有mm单位,需要自己转。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧