我正在开发一个 Android 应用程序,它是一个测验。另一方面,我正在开发一个完全基于 Swing 的桌面工具。桌面工具用于插入测验的问题并生成一个包含所有问题的序列化目标文件。我使用 java.awt.Image
来保存附有问题的图像。
不幸的是,当我开发完桌面工具并转到Android 端时,我发现Android 没有java.awt.Image
。 所以我的问题是,是否可以在 Android 应用程序中包含 java.awt.Image
?或者除了支持 Swing 组件之外,Java 和 Android 是否还有另一个处理 Image 的类?或者至少,是否有其他方法可以解决我遇到的问题?
注意:您可能想知道为什么我要序列化对象而不只是从 XML 或数据库中提取问题。那是因为,我需要有一个树数据结构作为问题的类别;每个类别在子类别旁边都有问题列表。
最佳答案
这里是解决方案:在Java端使用BufferedImage
并将其转换为字节数组,然后在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));
}
*/
安卓端:
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);
关于java - 将图像(与 Swing 兼容)从 Java 序列化到 Android 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9994129/