当前位置: 首页 > 面试题库 >

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

费朗
2023-03-14
问题内容

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

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

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


问题答案:

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


 类似资料:
  • 问题内容: 当我将WCF配置为使用jSON序列化并将DataTable包含在我的一个DataContracts中时,它会先将DataTable序列化为XML,然后再将整个DataContract序列化为jSON。我希望将DataTable序列化为jSON,而不是XML。 我的问题是: 为什么首先将DataTable序列化为XML? 我如何才能将其序列化到jSON? 问题答案: DataTable是

  • 问题内容: 我有一个用Java编写的Web应用程序(Spring,Hibernate / JPA,Struts2),用户可以在其中上传图像并将其存储在文件系统中。我想缩放这些图像,以使它们具有一致的大小,以便在网站上显示。哪些库或内置函数将提供最佳结果?在做出决定时,我将考虑以下标准: 免费/开源(基本) 易于实施 结果质量 性能 可执行文件的大小 问题答案: 看一下Java Image I /

  • 我正在编写一个可序列化的类,它接受多个参数,包括一个函数: 存储在成员变量中,因此需要可序列化。如果分配给它们的类型是可序列化的,则Javalambda是可序列化的。如果使用lambda创建,那么确保在构造函数中传递的是可序列化的最佳方法是什么? > 创建一个可序列化函数,并使用该函数: 问题: 现在,

  • 问题内容: 我敢肯定有很多方法,但是什么是对您的代码影响最小的推荐方法呢? 显而易见的是,您创建了属性文件,但是如何在渲染中交换值?在J2EE中,您总是只需要重新渲染整个页面即可,这很容易。但是在Swing应用程序中,您是否只是在paintComponent(Graphics g)方法中添加了.getProperty()的代码? 如果是这样,那么看起来似乎并不繁琐,因为现在您必须在不需要的地方到处

  • 我试图使用kafkastreams进行聚合,但得到的错误如下所示 这是我正在做的事情: 我收到的错误如下。 由以下原因引起:A 序列化程序(密钥:类型:a 序列化程序(密钥:类型:网站名称:通用序列化程序 / 值:在流配置中更改默认的 Serdes 或通过方法参数提供正确的 Serdes。在 org.apache.kafka.流.处理器.内部.sinkNode.进程 (SinkNode.java:

  • 问题内容: 我用下面的代码。两者在我的应用程序中都运行良好。 情况1。 情况2 但是我有一些问题: 在性能方面哪个更好? 在哪种情况下,请选择案例2? 问题答案: 情况2在性能上是更好的BUT:它返回一个大小不变的List。意味着您不能在其中添加/删除元素: 返回由指定数组支持的 固定大小的 列表。(将返回的列表更改为“直写”到数组。)