我打算使用Thumbnailator 生成大尺寸(0.5-10MB)图片的缩略图。 我查看了他们的代码,发现ImageIO正用于创建缩略图。
我是图像文件及其技术细节和ImageIO软件包的新手。我想知道的是ImageIO是否使用(或可以使用)NIO来读取文件并生成缩略图?这将有助于提高生成缩略图的性能,我们必须生成很多 - 每个图像4个缩略图,图像范围从0.5 MB到10 MB,平均每秒约30个请求。
答案 0 :(得分:0)
ImageIO使用对流的抽象,称为ImageInputStream
。存在多个实现,由InputStream
,RandomAccessFile
等支持。
要回答您的问题,是的,可以为ImageIO创建插件以提供由NIO支持的ImageInputStream
(FileChannel
为例)。看看ImageInputStreamSpi课程。
但是我不确定与基于RandomAccessFile
的现有实现相比,这是否会带来很大改进(许多现有类在引入NIO时进行了改造以从中受益)。
可能会大大提高性能的一件事是调用ImageIO.setUseCache(false)
来关闭磁盘缓存(以内存缓存为代价)。
不幸的是,我不知道Thumbnailator,所以我不能说这些选项会如何影响你的表现。