如何在C#

时间:2018-03-30 00:46:02

标签: c# .net winforms bitmap picturebox

我正在开发一个Windows窗体应用程序,其中我需要做的一件事就是从.img文件中提取图像。我能够读取正常的jpg和png文件,但不能读取.img文件。

我在互联网上找不到这方面的很多信息。我确实在msdn上找到了一些代码,我试图让它工作。下面是抛出的代码和异常。

 FileInfo file = new FileInfo(FilePath.Text);
 FileStream f1 = new FileStream(FilePath.Text, FileMode.Open, 
 FileAccess.Read, FileShare.Read);
 byte[] BytesOfPic = new byte[Convert.ToInt32(file.Length)];
 f1.Read(BytesOfPic, 0, Convert.ToInt32(file.Length));

 MemoryStream mStream = new MemoryStream();
 mStream.Write(BytesOfPic, 0, Convert.ToInt32(BytesOfPic.Length));
 Bitmap bm = new Bitmap(mStream, false);
 mStream.Dispose();

 // ImageBox is name of a PictureBox
 ImageBox.image = bm;   // this line is throwing the error

抓住了异常

  

System.ArgumentException:参数无效。      在System.Drawing.Bitmap..ctor(Stream stream,Boolean useIcm)      at A02_Stegnography.Form1.ReadImgFile()in C:\ Users \ tiwar \ Desktop \ A02-Stegnography \ A02-Stegnography \ Form1.cs:第65行

如果这是一个愚蠢的问题,我很抱歉。我希望我提供了足够的信息,但如果我没有,请告诉我。

1 个答案:

答案 0 :(得分:1)

FileInfo file = new FileInfo(FilePath.Text);
FileStream f1 = new FileStream(FilePath.Text, FileMode.Open, 
FileAccess.Read, FileShare.Read);
byte[] BytesOfPic = new byte[Convert.ToInt32(file.Length)];
f1.Read(BytesOfPic, 0, Convert.ToInt32(file.Length));

using (MemoryStream mStream = new MemoryStream())
{
    mStream.Write(BytesOfPic, 0, BytesOfPic.Length);
    mStream.Seek(0, SeekOrigin.Begin);
    Bitmap bm = new Bitmap(mStream);

    // ImageBox is name of a PictureBox
    ImageBox.image = bm;
}

您可以尝试我的问题解决方案