“参数无效。在System.Drawing.Bitmap..Ctor(Stream stream)。”

时间:2013-02-07 09:33:00

标签: c# asp.net image stream argumentexception

我收到“参数无效.at System.Drawing.Bitmap..ctor(Stream stream)”   在我的代码中。

我在我的代码中使用了以下行,

System.Drawing.Bitmap image = new System.Drawing.Bitmap(fileUpload1.PostedFile.InputStream);

我在这段代码中没有发现任何错误。

4 个答案:

答案 0 :(得分:1)

在某些情况下,Bitmap需要 可搜索 流。尝试:

Bitmap image;
using(var ms = new MemoryStream()) {
    fileUpload1.PostedFile.InputStream.CopyTo(ms);
    ms.Position = 0;
    image = new System.Drawing.Bitmap(ms);
}

然而。我还必须注意,这看起来像ASP.NET; ASP.NET中不支持System.Drawing see here

  

不支持在Windows或ASP.NET服务中使用System.Drawing命名空间中的类。尝试在其中一种应用程序类型中使用这些类可能会产生意外问题,例如服务性能下降和运行时异常。有关支持的替代方法,请参阅Windows Imaging Components。

答案 1 :(得分:0)

这解决了我的问题。

    byte[] fileData = null;
using (var binaryReader = new BinaryReader(Request.Files[0].InputStream))
{
    fileData = binaryReader.ReadBytes(Request.Files[0].ContentLength);
}
ImageConverter imageConverter = new System.Drawing.ImageConverter();
System.Drawing.Image image = imageConverter.ConvertFrom(fileData) as System.Drawing.Image;
image.Save(imageFullPath, System.Drawing.Imaging.ImageFormat.Jpeg);

答案 2 :(得分:0)

此外,有时您会在文件存在时获得该无效参数,但不会在该位置获得该参数。我有一个类似的问题,我使用相对路径,但我忘了设置图像文件复制到bin目录,所以我得到了同样的错误。仅供参考

答案 3 :(得分:0)

就我而言,文件所在的文件夹未授予应用程序访问文件的权限。通过尝试直接将文件作为流读取,报告了一个异常,表明访问被拒绝。然后,我检查了文件和文件夹的安全性,发现它们都没有足够的权限来允许应用程序由其他用户读取。原始的“参数无效”错误没有提供足够的信息来诊断实际问题。