将图像序列化(与Swing兼容)从Java到Android的最佳方法是什么?

Eng*_*uad 4 java swing serialization android image-processing

我正在开发一个Android应用程序,这是一个测验.另一方面,我正在开发一个完全基于Swing的桌面工具.桌面工具用于插入测验的问题,并生成一个序列化的目标文件,其中包含所有问题.我曾经java.awt.Image拿着附有问题的图像.

不幸的是,当我完成桌面工具的开发并转到Android端时,我发现Android没有java.awt.Image.所以我的问题是,无论如何要包含java.awt.Image在Android应用程序中?或者除了支持Swing组件之外,Java和Android中还有另一个可用于处理Image的类吗?或者至少,有没有办法解决我遇到的问题?

注意:您可能想知道为什么我要序列化对象而不仅仅是从XML或数据库中提取问题.那是因为,我需要将树数据结构作为问题的类别; 每个类别都有一个子类别旁边的问题列表.

Eng*_*uad 8

这是解决方案:BufferedImage在Java端使用并将其转换为字节数组,然后在Android端获取字节数组并将其转换为Bitmap.

Java方面:

public static byte[] imageToByteArray(BufferedImage image) throws IOException
{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write(image, "png", baos);
    return baos.toByteArray();
}

/*
public static BufferedImage byteArrayToImage(byte[] imageArray) throws IOException
{
    return ImageIO.read(new ByteArrayInputStream(imageArray));
}
*/
Run Code Online (Sandbox Code Playgroud)

Android方面:

BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inDither = true;
opt.inPreferredConfig = Bitmap.Config.ARGB_8888;
byte[] imageByteArray = getImageByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(imageByteArray, 0, imageByteArray.length, opt);
imageView.setImageBitmap(bitmap);
Run Code Online (Sandbox Code Playgroud)