在 VB.NET 中,我有以下函数,可让我计算尚未保存到文件的图像的哈希值:
Public Function pictureHash(ByVal image As System.Drawing.Image) As String
Try
If image Is Nothing Then Return Nothing
Dim ha As HashAlgorithm = HashAlgorithm.Create()
Dim ms As New MemoryStream()
image.Save(ms, image.RawFormat)
ms.Position = 0
Dim imageHash As Byte() = ha.ComputeHash(ms)
ms.Close()
Return BitConverter.ToString(imageHash)
Catch ex As Exception
Return Nothing
End Try
End Function
问题是我在指令上得到一个 ArgumentNullException image.Save(ms, image.rawFormat)
。
这是异常的详细信息:
System.ArgumentNullException occurred
Message="Value cannot be null. Parameter name: encoder"
ParamName="encoder"
Source="System.Drawing"
StackTrace:
at System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams)
at System.Drawing.Image.Save(Stream stream, ImageFormat format)
at MyProgram.pictureHash(Image image)
问题是,当我查看堆栈跟踪时,最后一次使用 3 个参数(崩溃的那个)调用 Image.Save 甚至不是由我进行的,而是由之前的 Image.Save 调用进行的。
知道我该怎么做吗?
非常感谢您的帮助,
问候,
乔尔