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

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

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); 

使用ImageIO将图像写入“png”或“jpg”。 例如http://docs.oracle.com/javase/tutorial/2d/images/saveimage.html