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)
我正在尝试使用以下方法将我的 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)