我正在尝试编写一个在PC上创建图像并通过WiFi传输并在Android上显示的应用程序。除了最后一部分我一切都在工作。 Android和PC正在来回发送消息。 PC创建图像,将其转换为字节数组,将其发送到Android,Android接收它。不起作用的是将字节数组转换回图像。这是我的代码。
我的电脑上的C#代码使用它来创建字节数组
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp );
return ms.ToArray();
}
我的Android上的Java代码使用此代码将字节数组转换回图像。
try {
//This line always returns NULL
Bitmap bmp=BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
if (bmp != null) {
//display image in UI
imgViewer.setImageBitmap(bmp);
imgViewer.invalidate();
}
else
{
Log.i(Consts.TAG, "image is null ");
}
} catch (Exception e){
Log.i(Consts.TAG, "ERROR decoding image " + e.toString());
}
BitmapFactory.decodeByteArray()
始终返回NULL。我在PC上正确创建字节数组吗?我应该在Android上以不同方式重新创建图像吗?
提前致谢,
麦克
答案 0 :(得分:0)
我明白了。我需要像这样转换图像。现在它有效。
public static byte[] ImageToByte(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}
感谢zapl和FoamyGuy的输入。