我正在开发一个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行
如果这是一个愚蠢的问题,我很抱歉。我希望我提供了足够的信息,但如果我没有,请告诉我。
答案 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;
}
您可以尝试我的问题解决方案