【问题标题】:"Parameter is not valid. At System.Drawing.Bitmap..Ctor (Stream stream)."“参数无效。在 System.Drawing.Bitmap..Ctor(流流)。”
【发布时间】:2013-02-07 09:33:00
【问题描述】:

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

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

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

我没有发现这段代码有什么问题。

【问题讨论】:

    标签: c# asp.net image stream argumentexception


    【解决方案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; System.Drawing 在 ASP.NET 中不受支持see here

    System.Drawing 命名空间中的类不支持在 Windows 或 ASP.NET 服务中使用。尝试从这些应用程序类型之一中使用这些类可能会产生意想不到的问题,例如服务性能下降和运行时异常。有关受支持的替代方案,请参阅 Windows 映像组件。

    【讨论】:

    • 但是,我的代码有什么问题?实际上这应该有效。你能详细说明不工作的原因吗?
    • @Mahe 首先尝试一下;如果它有效,那么答案是“它不喜欢HttpInputStream”,出于某种原因,它没有告诉我们。当然,另一种可能性是传入的数据实际上不是图像(或不是支持图像)。关于“应该可以工作”:不,那是完全错误的:请参阅我在帖子底部复制的警告:明确 zero 期望 Bitmap 在 ASP.NET 中工作,尽管通常它确实(而且很多人确实在那里使用它)。 Bitmap 使用 GDI/GDI+;并且 在桌面 UI 代码之外不受技术支持
    【解决方案2】:

    这解决了我的问题。

        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);
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-14
          • 1970-01-01
          • 1970-01-01
          • 2015-09-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多