我试图从字节数组创建一个图像.字节数组由指纹扫描器创建(参见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
Run Code Online (Sandbox Code Playgroud)
错误发生在行
thisImage = Image.FromStream(ms)
Run Code Online (Sandbox Code Playgroud)
字节数组有65280个元素.我已经回顾了几个与此类似的StackOverflow帖子,但没有任何效果.我已经尝试将FromStream方法的useEmbeddedColorManagement和validateImageData参数设置为False和True,但这并没有解决问题.
您对如何纠正有任何建议ArgumentException吗?
FromStream期望以下格式之一的数据:
托管GDI +具有支持以下文件类型的内置编码器和解码器:
BMP
GIF
JPEG
PNG
TIFF
Run Code Online (Sandbox Code Playgroud)
我怀疑你的字节数组不在这些中,并且没有这些格式所期望的元数据或压缩信息.
你想要做的是创建一个Bitmap对象并读取字节数组中的每个像素,在位图中调用相应像素的SetPixel.您将得到一个具有所需像素的位图(图像).
小智 5
请尝试以下操作:
TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
Bitmap bitmap1 = (Bitmap)tc.ConvertFrom(byteArray);
Run Code Online (Sandbox Code Playgroud)