0

我正在创建一个程序,它在拍摄后立即从 FlashAir 读取图片(每个文件的 JPG 最大大小约为 10Mb),将它们显示在更大的屏幕上以供查看,并将它们保存到本地文件夹中。最重要的是减少从拍摄照片到显示给用户的时间,并防止质量下降(它们是微距照片)。现在,相机可以使用 JPG,因此暂时无法更改它。所有图片必须以尽可能高的质量保存在本地。

我想知道实现这一目标的最佳方法是什么。由于 FlashAir 卡在相机中并四处移动,瓶颈可能在于无线传输(最大速度为 54 Mb/s)。

图片可以通过Java应用程序显示或发送到不同的应用程序进行编辑,但我想减少I/O操作(我不想在本地保存后重新读取图片以实际显示它) .

Java 8使用纯类实现这一目标的最佳方法是什么?

我的测试实现用途ImageIO.read()ImageIO.write()方法。我用这种方法遇到的问题是显示图片需要很长时间(实际上是从保存的文件夹中读取)并且图像被重新编码和压缩,与原始文件相比失去质量SD 卡。

我觉得这应该是一种首先通过网络非常有效地传输字节并运行两个并行进程以将未触及的字节保存到磁盘并解码并显示图像的方法(然后可能会编辑图像并将其保存到磁盘到不同的位置)。

我不需要一个完整的工作示例。我主要关心的是什么 Java 8 I/O 类最适合这项工作,并知道我的方法是否是实现结果的最佳方法。

编辑

经过一些研究后,我正在考虑ReadableByteChannel将图片字节存储在 a 中ByteBuffer,然后将其副本传递给两个并行运行的作业:保存字节的一个将使用 a FileChannel,而显示图像的一个将使用它们来创建一个ImageIcon.

我不知道是否有更好/推荐的方法。

4

0 回答 0