[winforms]: 图像问题

guokea 2008-12-18 06:12:09

FileStream str = new FileStream(c:\\1.bmp, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(str);
strbuf= br.ReadBytes((int)str.Length);



bmp 位图数据读到strbuf里是反着的。请教把数据正过来。
...全文
74 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gomoku 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 guokea 的帖子:]
C# code
FileStream str = new FileStream(c:\\1.bmp, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(str);
strbuf= br.ReadBytes((int)str.Length);
bmp 位图数据读到strbuf里是反着的。请教把数据正过来。
[/Quote]

Bitmap可以是由上至下的格式(BITMAPINFOHEADER.biHeight > 0),
也可以由下而上(BITMAPINFOHEADER.biHeight < 0)。两种都是合法的格式。
"反着"并不要紧,.Net的Bitmap类理解这种格式,能正常装入并能正常显示。

如果你一定要手动把图形翻个,可以这样做:

bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);


qiying1988 2008-12-18
  • 打赏
  • 举报
回复
我没说明白!strbuf里读取数据是对对的!

图像的像素值在文件中的存放顺序为从左到右,从下到上,
在BMP文件中首先存放的是图像的最后一行像素,最后才存储图像的第一行像素,但对与同一行的像素,则是按照先左边后右边的的顺序存储的;


dayizhixiaotutu 2008-12-18
  • 打赏
  • 举报
回复
不明白 帮顶
wangping_li 2008-12-18
  • 打赏
  • 举报
回复
什么反着的?听得不怎么懂?
读到byte[]里面还会错?

110,533

社区成员

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

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

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