我正在开发一个测验的Android应用程序。另一方面,我正在开发完全基于Swing的桌面工具。桌面工具用于插入测验的问题,并生成包含所有问题的序列化目标文件。我过去java.awt.Image经常拿着附有问题的图片。
java.awt.Image
不幸的是,当我完成桌面工具的开发并转到Android方面时,我发现Android没有java.awt.Image。 所以我的问题是 ,是否java.awt.Image在Android应用程序中包含?还是除了支持Swing组件之外,在Java和Android中还有其他类可以处理Image吗?还是至少有解决我所遇到问题的替代方法?
注意: 您可能想知道为什么我要序列化对象,而不仅仅是从XML或数据库中获取问题。这是因为,我需要有一个树数据结构作为问题的类别。每个类别在子类别旁边都有问题列表。
解决方案如下:BufferedImage在Java端使用并将其转换为字节数组,然后在Android端,获取字节数组并将其转换为Bitmap。
BufferedImage
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);