C#关于Image.fromStream()报错 的一些问题.

在尝试将位图转换为byte[]数组再通过Image.FromStream()还原为图片时,作者遇到参数无效的问题。问题源于转换过程中丢失了RGB信息和每行的空白字节。解决方案是直接保存原始图片到MemoryStream,然后从该流中创建Image对象,确保数据完整。修正后的代码展示了正确的转换方法。
摘要由CSDN通过智能技术生成

为了将一个二维字节数组byte[] 转换为image类型的图片 最初我写了以下代码。总是出现一些参数无效的错误

Bitmap btm = new Bitmap(pictureBox1.ImageLocation);      
            byte [] tt=imgproc.GetPixels(btm);

            MemoryStream ms = new MemoryStream( );
       
            Image image = Image.FromStream(ms,true);
            ms.Close();
            string filename = "D:\\124"+System.Drawing.Imaging.ImageFormat.Bmp;
            image.Save(filename);

            pictureBox2.ImageLocation = filename;

imgproc是我编写的一个图像处理类.GetPixeds(btm)它调用C#图像处理库函数将一个位图的像素以数值的形式存在数组中。然后我想将数组又变换为原来的图片,调用Image.FromStream()方法,但是运行的时候总是报错argumentexception(参数无效)。按道理来说应该是行得通的。但是如果细想函数转换的过程我们就会发现这样写错误重重。

1.将图片转为byte[]数组的时候。先要按照灰度计算公式gray=0.3R+0.59G+0.11B 将图片一个像素的连续三个字节转为了一个字节。且在一行像素中,跳过了三个字节的空白区。

2.调用FromStream()的时候,Byte[] 数组中的值已经和原来位图字节值完全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值