В 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)
Дело в том, что когда я смотрю на трассировку стека, последний вызов Image.Save с 3 параметрами (тот, который дает сбой) даже не я, а предыдущий вызов Image.Save.
Есть идеи, что мне делать?
Заранее большое спасибо за помощь,
С уважением,
Joël
System.Drawing.Image
в формате JPEG, а другие поступают в виде байтов через несколько TCP-пакетов напрямую через сокет, открытый камерой. Во втором случае байты объединяются в уникальный массив байтов и также представляют изображение в формате JPEG. - person Joel   schedule 02.04.2013