2009-04-13 46 views
2

这是我的代码把一个byte []数组转换为图像我得到了C#反转图像

unsafe 
{ 
    //convert the UInt32[] into byte array and then assign the pointer to it 
    fixed (byte* ptr = Misc.ConvertFromUInt32Array(image)) 
    { 
    Bitmap bmp = new Bitmap(200,64,800, 
     PixelFormat.Format32bppRgb, 
     new IntPtr(ptr)); 
    bmp.Save("test.bmp"); 
    } 
} 

而且我得到这个:

alt text http:////img11.imageshack.us/img11/4853/testacr.png

凡在的问题代码,为什么会发生?如何将其翻转回正常?

+0

你只能有一个图片...显示反转的一个,如果你必须选择。 – ojblass 2009-04-13 04:30:31

+0

Misc.ConvertFromUInt32Array(image)里面发生了什么?这个问题不是在那里发生的,而不是保存图像的一小段代码? – Xiaofu 2009-04-13 04:44:19

回答

7
bmp.RotateFlip(RotateFlipType.Rotate180FlipX); 

固定的问题:)

1

嘿它看起来像你张贴的两个图像没有任何关系(除了有一个类似的模糊模式)。你发布了错误的文件吗?

关于您所看到的问题,我想您会发现x-y轴的原点存在问题。正常的图像和图形API使用一个稍微古怪的轴,在其中你计算y轴的“向下”,也就是说,点(0,0)位于屏幕的左上角,随着你增加y,你沿着屏幕。因此,假定您在转换中出错或者两个图像使用不同的y轴方案似乎是合理的。

+0

不,我不这么认为。问题必须在“bmp”这一行,有些人说这个问题在进步(参数应该是负面的),但它不存在。 – 2009-04-13 04:33:28

+0

你在说什么“bmp”系列? “Stride”位于包含“bmp”的行之一 – 2009-04-13 04:42:57

1

为什么不全部更换不安全的东西:

private static Bitmap ConvertFromBytes(Byte[] imagebytes) 
{ 
    return new Bitmap(new MemoryStream(imagebytes)); 
}