Image.FromStream:参数无效

时间:2011-07-15 20:04:18

标签: .net imaging

我正在尝试从字节数组创建图像。字节数组由指纹扫描器创建(参见CaptureFrame方法)。 fwidth是256,fheight是255.

当我运行下面的代码时,我得到了

  

System.ArgumentException:参数无效。

Dim fWidth As Short
Dim fHeight As Short

DFRProxy.DFRProxy.GetImageDimensions(fWidth, fHeight)

Dim imgBufLength As Integer = CInt(fWidth) * fHeight

Dim finger(imgBufLength) As Byte

Dim startCap As Short = DFRProxy.DFRProxy.StartCapture(0)

Dim capFrame As Short = DFRProxy.DFRProxy.CaptureFrame(0, finger, 0)


Using ms As New IO.MemoryStream(finger)
    thisImage = Image.FromStream(ms)
End Using

错误发生在

thisImage = Image.FromStream(ms)

字节数组有65280个元素。我已经回顾了几个与此类似的StackOverflow帖子,但没有任何效果。我尝试将FromStream方法的useEmbeddedColorManagementvalidateImageData参数设置为False和True,但这并不能解决问题。

您对如何更正ArgumentException

有任何建议吗?

3 个答案:

答案 0 :(得分:7)

FromStream期待以下其中一种格式的数据:

  

托管GDI +具有支持以下文件类型的内置编码器和解码器:

BMP

GIF

JPEG

PNG

TIFF

我怀疑你的字节数据不在这些中,并且没有这些格式所期望的元数据或压缩信息。

您要做的是创建一个Bitmap对象并读取字节数组中的每个像素,在位图中调用相应像素的SetPixel。您将得到一个具有所需像素的位图(图像)。

答案 1 :(得分:4)

尝试以下方法:

TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
Bitmap bitmap1 = (Bitmap)tc.ConvertFrom(byteArray);

答案 2 :(得分:0)

除了用于VB.NET的> ggsmartboy答案:

在模块/类/表单

之上
Imports system.componentmodel

在代码中

Dim ba As New Byte() 'Make sure you set the byte array to something
Dim tc As TypeConverter = TypeDescriptor.GetConverter(GetType(Bitmap))
Dim bmp As Bitmap = tc.ConvertFrom(ba)

随后:

PictureBox1.Image = bmp

干杯