将NIO与Image IO或Thumbnailator一起使用

时间:2013-05-22 17:49:31

标签: thumbnails nio javax.imageio

我打算使用Thumbnailator 生成大尺寸(0.5-10MB)图片的缩略图。 我查看了他们的代码,发现ImageIO正用于创建缩略图。

我是图像文件及其技术细节和ImageIO软件包的新手。我想知道的是ImageIO是否使用(或可以使用)NIO来读取文件并生成缩略图?这将有助于提高生成缩略图的性能,我们必须生成很多 - 每个图像4个缩略图,图像范围从0.5 MB到10 MB,平均每秒约30个请求。

1 个答案:

答案 0 :(得分:0)

ImageIO使用对流的抽象,称为ImageInputStream。存在多个实现,由InputStreamRandomAccessFile等支持。

要回答您的问题,是的,可以为ImageIO创建插件以提供由NIO支持的ImageInputStream FileChannel为例)。看看ImageInputStreamSpi课程。

但是我不确定与基于RandomAccessFile的现有实现相比,这是否会带来很大改进(许多现有类在引入NIO时进行了改造以从中受益)。

可能会大大提高性能的一件事是调用ImageIO.setUseCache(false)来关闭磁盘缓存(以内存缓存为代价)。

不幸的是,我不知道Thumbnailator,所以我不能说这些选项会如何影响你的表现。