C#还原对图像做的修改

在C#程序中对图像进行处理,有的时候需要将处理后的图像还原,便于观察两者之间的区别,避免重新运行程序造成的麻烦。我是将之前写的Tab页中打开的图像进行还原,将原始图像数据保存在数据流中,然后从数据流中独处数据重新绘制图片,最后要将重新绘制的图片显示在Tab页中,覆盖处理过的图片

    //文件到流的转换
    static public int ImageToStream(Image img)
    {
        //这里重新定义一个变量接收图像数据,解决异常(GDI发生一般性错误)
        Image img1 = new Bitmap(img);
        MemoryStream stream = new MemoryStream();
        img1.Save(stream, ImageFormat.Bmp);
        BinaryReader br = new BinaryReader(stream);
        photo = stream.ToArray();//公共缓冲区
        stream.Close();
        return 0;
    }

    //根据流显示图
    static public Image StreamToImage()
    {
        byte[] bytes = photo;
        MemoryStream ms = new MemoryStream(bytes);
        ms.Position = 0;
        Image img = Image.FromStream(ms);
        ms.Close();
        return img;
    }

然后通过button的click事件调用StreamToImage()函数就可以了。
这里需要注意,在ImageToStream()方法中,需要将传入的参数img重新用一个Image类型的变量img1接收,然后对变量Img1进行Save,否则C#会出现异常“GDI+发生一般性错误”

你可能感兴趣的:(C#还原对图像做的修改)