0

我正在尝试编写一个在 PC 上创建图像并通过 WiFi 传输并将其显示在 Android 上的应用程序。除了最后一部分,我一切正常。Android 和 PC 来回发送消息。PC 创建图像,将其转换为字节数组,将其发送到 Android,Android 接收它。不起作用的是将字节数组转换回图像。这是我的代码。

我 PC 上的 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 上以不同的方式重新创建图像吗?

4

1 回答 1

0

我想到了。我需要像这样转换图像。现在它起作用了。

    public static byte[] ImageToByte(Image img)
    {
        ImageConverter converter = new ImageConverter();
        return (byte[])converter.ConvertTo(img, typeof(byte[]));
    }

感谢 zapl 和 FoamyGuy 的投入。

于 2012-11-24T17:53:34.737 回答