我收到“参数无效.at System.Drawing.Bitmap..ctor(Stream stream)” 在我的代码中。
我在我的代码中使用了以下行,
System.Drawing.Bitmap image = new System.Drawing.Bitmap(fileUpload1.PostedFile.InputStream);
我在这段代码中没有发现任何错误。
答案 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)
就我而言,文件所在的文件夹未授予应用程序访问文件的权限。通过尝试直接将文件作为流读取,报告了一个异常,表明访问被拒绝。然后,我检查了文件和文件夹的安全性,发现它们都没有足够的权限来允许应用程序由其他用户读取。原始的“参数无效”错误没有提供足够的信息来诊断实际问题。