我设计了一个休息服务来响应用户存储在数据库中的图像。服务很好。该服务以jpg格式响应图像。如果用户以jpg格式上传图像,则响应也很好,如果图像是某些其他格式,则响应不能呈现为图像。我需要为所有输入图像类型构建一个jpg转换器或编码器。是否有任何可能的方法来实现这一目标。
答案 0 :(得分:11)
你应该看看ImageIO
。它支持读写JPEG,PNG,BMP,WBMP和GIF。
JAI API还提供TIFF支持,我之前也使用过RAW插件用于尼康相机。
查看Working with Images和JavaDocs了解详情。
更新了示例
没有源图像就无法进行正确的测试,但这是基本的工作流程。
我已使用File
作为我的输入,但为了演示基本概念,我创建了InputStream
和OutputStream
(因为ImageIO
可以读/写{ {1}} S)
File
<强>更新强>
所以使用上面的代码,我能够将我在paint中创建的PNG文件转换为JPG ...
<强> PNG / JPG 强>
您也可以尝试将输入流和输出流转换为File inputFile = new File("/path/to/image.png");
File outputFile = new File("Test.jpg");
try (InputStream is = new FileInputStream(inputFile)) {
BufferedImage image = ImageIO.read(is);
try (OutputStream os = new FileOutputStream(outputFile)) {
ImageIO.write(image, "jpg", os);
} catch (Exception exp) {
exp.printStackTrace();
}
} catch (Exception exp) {
exp.printStackTrace();
}
和ImageInputStream
,但这通常在您想要查找给定图像格式的提供程序时完成。
ImageOutputStream