我正在整理一些使用javax.imageio.ImageIO的代码。我有用户请求的文件后缀,例如 jpg,我们转换保存的图像,然后以正确的格式将其呈现给用户。
现在我想将后缀映射到 MIME 类型。使用快速切换相对容易做到这一点,但鉴于 ImageIO 具有
static Iterator<ImageWriter>
getImageWritersBySuffix(String fileSuffix)
static Iterator<ImageWriter>
getImageWritersByMIMEType(String MIMEType)
它必须知道后缀和 MIME 类型之间的映射,或者特定的ImageWriter
. 因此,必须有一种方法可以从我将要使用的作者那里获取内容类型。但我在 ImageWriter 上看不到任何返回内容类型的方法或属性,甚至是足够的。
本质上,我正在尝试完成以下代码块:
Iterator<ImageWriter> imageWriters = ImageIO.getImageWritersBySuffix(type);
ImageWriter imageWriter = imageWriters.hasNext() ? imageWriters.next() : null;
if (imageWriter != null) {
contentType = imageWriter. ???
}
谢谢!我猜的蛮力方法是获取所有支持的 MIME 类型,然后遍历这些类型,直到找到一个返回与 get-by-suffix 调用相同的 ImageWriter 的类型(如果确实很容易比较结果),但我是希望有比这更优雅的东西 - 我更喜欢切换到那个。