新的位图(MemoryStream ms)返回颠倒的图像

时间:2013-11-01 08:24:47

标签: c# bitmap memorystream

我有两个byte [] - 位图表示 - 一个来自bitmap.save(ms),ms.toarray,另一个来自其他一些函数。根据我见证了Watch窗口输出的眼睛,这两个字节数组完全相同。 SequenceEquals()调用说的相同。这是代码:

public void Debug(Bitmap b){
  DrawImage(viewIn, b);
  byte[] t1 = BmpConv.GetAllData(b);
  byte[] t2 = BmpConv.ConcatBytes(BmpConv.GetHeaderData(b), BmpConv.GetColorData(b));
  var eq = t1.SequenceEqual(t2); // returns true
  MemoryStream ms = new MemoryStream(t2);
  DrawImage(viewOut, new Bitmap(ms));
}

问题是: 如果使用t1数组创建memorystream,则图像没问题。 如果使用t2数组创建memorystream,则图像是颠倒的。 什么。 有人能告诉我发生了什么事吗?现在我要相信幽灵,只是在我的代码的某些地方放一个拐杖来反转位图。


upd2:已解决。原来这是我的GetColorData中的一个错误。不幸的是,我的测试位图是对称的,所以我无法看到通过Marshall.Copy和Bitmap.Save复制以不同的顺序复制行。

0 个答案:

没有答案