BufferedImage 到 InputStream - 格式不同

BufferedImage to InputStream - Format is different

我正在尝试使用以下方法将我的 BufferedImage 转换为输入流:

BufferedImage bi = ImageIO.read(file.getInputStream());
bi = Scalr.resize(bi, 300);
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(bi, file.getContentType(), os); //the content type is specified as image/jpeg

我面临的问题是我的 file.getContentType() returns 值是 "image/jpeg" 而不是例如"jpg",因此显示损坏的文件。

有什么好的方法可以将其转换为 jpg(或使其可能接受 image/jpeg)?我有许多其他文件格式(例如 png),并且认为执行一些逻辑来检查内容类型的 switch 语句是完全没有必要的。

.jpeg.jpg 是等效的扩展 - jpg 的存在是由于 Windows 的历史要求具有 8.3 filename.extension 格式。

要获得必要的扩展,请将其从内容类型中拉出:

final String contentType = file.getContentType();
contentType.substring(contentType.lastIndexOf("/") + 1)