小编典典

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

java

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

不幸的是,当我完成桌面工具的开发并转到Android方面时,我发现Android没有java.awt.Image 所以我的问题是
,是否java.awt.Image在Android应用程序中包含?还是除了支持Swing组件之外,在Java和Android中还有其他类可以处理Image吗?还是至少有解决我所遇到问题的替代方法?

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


阅读 223

收藏
2020-10-12

共1个答案

小编典典

解决方案如下: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));
}
*/

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);
2020-10-12