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

标签 java android swing serialization image-processing

我正在开发一个 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/

相关文章:

java - 如何让 Java 应用程序以更多内存运行?

机器人 : open chrome custom tab from fragment

android - 搜索 查看更改搜索菜单项图像

java - 延迟处理直到 GUI 输入

java - 如何使用在不同类中实例化的对象中的方法?

java - relativeLayout 无法转换为 android.text.TextWatcher

java - 从文本文件中读取整数

java - 如何使用xpath取出这个imageurl

android - Android 上的 libspotify.so.12.1.51 段错误

java - 南面板和北面板使用哪个布局管理器?