【问题标题】:What causes an "Argument Exception" when saving a bitmap to a stream?将位图保存到流时导致“参数异常”的原因是什么?
【发布时间】:2011-06-07 01:47:27
【问题描述】:

谁能帮我写下下面的代码?我在第 4 行收到“参数异常”。 InnerException 什么都不是。

Using btm As Bitmap = Image.FromStream(importFile.InputStream)
    Using newImage As Bitmap = ResizeImage(btm, StoringSize)
        Dim stream As New MemoryStream
        newImage.Save(stream, Imaging.ImageFormat.Bmp) 'Argument exception occurred. Parameter is not valid
        StoringFilesHelper.SaveFile(fileName, stream, folderType)
    End Using
End Using

此代码正常运行,没有任何异常:

Using btm As Bitmap = Image.FromStream(importFile.InputStream)
    Using newImage As Bitmap = ResizeImage(btm, StoringSize)
        'Dim stream As New MemoryStream
        'newImage.Save(stream, Imaging.ImageFormat.Jpeg)
        'StoringFilesHelper.SaveFile(fileName, Stream, folderType)

        Dim filePath As String = StoringFilesHelper.GetLocalPath(fileName, folderType)
        newImage.Save(filePath)
    End Using
End Using

终于找到了原因。 http://blog.lavablast.com/post/2007/11/29/The-Mysterious-Parameter-Is-Not-Valid-Exception.aspx 图片是在 ResizeImage 方法中处理的。

【问题讨论】:

  • ArgumentException 消息应该告诉您它发生的参数,可能还有 InnerException,它应该告诉您导致 ArgumentException 的基础异常。贴出来,会有帮助的。
  • 根据 msdn Image.Save(...) 抛出 ArgumentNullException 和 ExternalException。 ResizeImage 工作正常吗?
  • ArgumentException 不会被 Image.Save 方法抛出(参见 documentation)。如果您的意思是ArgumentNullException,那么问题很可能出在代码的其他地方。有很多我们看不到的方法调用。他们在做什么?他们是否抛出异常?
  • @Nickolodeon:ResizeImage 工作正常(请参阅帖子中的更新)。 @Cody Gray:我正好有 ArgumentException
  • 笨蛋,我看不出问题所在。您并不总是在 Release 版本中获得正确的行号。我只将 SaveFile() 视为可能的失败模式。

标签: .net vb.net image stream bitmap


【解决方案1】:

尝试在没有此行的情况下运行您的代码:

StoringFilesHelper.SaveFile(fileName, stream, folderType) 

【讨论】:

  • 流重载也存在:public void Save(Stream stream, ImageFormat format)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 2012-07-05
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多