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