我的代码中出现“参数无效。在 System.Drawing.Bitmap..ctor(Stream stream)”。
我在我的代码中使用以下几行,
System.Drawing.Bitmap image = new System.Drawing.Bitmap(fileUpload1.PostedFile.InputStream);
我在这段代码中没有发现任何问题。
我的代码中出现“参数无效。在 System.Drawing.Bitmap..ctor(Stream stream)”。
我在我的代码中使用以下几行,
System.Drawing.Bitmap image = new System.Drawing.Bitmap(fileUpload1.PostedFile.InputStream);
我在这段代码中没有发现任何问题。
在某些情况下,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.NETSystem.Drawing
中不受支持:请参见此处
不支持在 Windows 或 ASP.NET 服务中使用 System.Drawing 命名空间中的类。尝试从这些应用程序类型之一中使用这些类可能会产生意想不到的问题,例如服务性能下降和运行时异常。有关受支持的替代方法,请参阅 Windows 映像组件。
这解决了我的问题。
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);
此外,有时您会在文件存在但不在该位置时获得该无效参数。我在使用相对路径时遇到了类似的问题,但是我忘记将图像文件设置为复制到 bin 目录,所以我得到了同样的错误。仅供参考
就我而言,文件所在的文件夹没有授予应用程序访问该文件的权限。通过尝试直接将文件作为流读取,报告了访问被拒绝的异常。然后我检查了文件和文件夹的安全性,发现它们都没有足够的权限允许应用程序被其他用户读取。最初的“参数无效”错误没有提供足够的信息来诊断实际问题。