我设计了一个休息服务来为用户响应存储在数据库中的图像。该服务工作正常。该服务以 jpg 格式响应图像。如果用户上传 jpg 格式的图片,响应也可以,如果图片是其他格式,则响应无法呈现为图片。我需要为所有输入图像类型构建一个 jpg 转换器或编码器。是否有任何可能的方法来实现这一目标。
问问题
22803 次
1 回答
12
你应该看看ImageIO
。它支持读取和写入 JPEG、PNG、BMP、WBMP 和 GIF。
JAI API 还提供 TIFF 支持,我之前也为尼康相机使用过 RAW 插件。
更新了示例
没有源图像将无法进行适当的测试,但这是基本的工作流程。
我已经用作File
我的输入,但为了演示基本概念,我创建了InputStream
and OutputStream
(as ImageIO
can read/write File
s)
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();
}
更新
因此,使用上面的代码,我能够将我在绘画中创建的 PNG 文件转换为 JPG ......
PNG/JPG
您也可以尝试将输入流和输出流转换为ImageInputStream
and ImageOutputStream
,尽管这通常在您想要查找给定图像格式的提供程序时完成。
File inputFile = new File("...");
File outputFile = new File("Test.jpg");
try (InputStream is = new FileInputStream(inputFile)) {
ImageInputStream iis = ImageIO.createImageInputStream(is);
BufferedImage image = ImageIO.read(iis);
try (OutputStream os = new FileOutputStream(outputFile)) {
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
ImageIO.write(image, "jpg", ios);
} catch (Exception exp) {
exp.printStackTrace();
}
} catch (Exception exp) {
exp.printStackTrace();
}
于 2013-01-31T05:40:09.167 回答