c#Byte to Image ArgumentOutOfRangeException

时间:2016-12-18 08:18:37

标签: c# arrays

将字节数组转换为Bitmap时遇到一些问题。这是我的例外:

  

未处理的类型' System.ArgumentOutOfRangeException'   发生在mscorlib.dll

我的代码:

public static System.Drawing.Bitmap ByteToImage(byte[] data)
{
    System.Drawing.Bitmap bmp;
    using (var ms = new MemoryStream(data))
    {
        bmp = new System.Drawing.Bitmap(ms);
    }
    return bmp;
}

Bitmap b = ByteToImage(editor1.system.Tiles[0].ImageData);
Form f = new Form();
f.BackgroundImage = b;
f.Show();

我需要在列表中加载序列化的字节数组,并在运行时转换为图像。

如果我保存位图

b.Save(@"C:\test.png");

如果我尝试在运行时加载位图,它会起作用我会收到此错误。

1 个答案:

答案 0 :(得分:1)

使用以下代码,它将解决您的问题。

    public static Image FormatImage(Image img, int outputWidth, int outputHeight)
    {

        Bitmap outputImage =null;
        Graphics graphics = null;
        try
        {
            outputImage = new Bitmap(outputWidth, outputHeight, System.Drawing.Imaging.PixelFormat.Format16bppRgb555);
            graphics = Graphics.FromImage(outputImage);
            graphics.DrawImage(img, new Rectangle(0, 0, outputWidth, outputHeight),
            new Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel);

            return outputImage;
        }
        catch (Exception ex)
        {                
           return img;
        }

}