【问题标题】:Image Conversion In Java [closed]Java中的图像转换[关闭]
【发布时间】:2013-02-01 04:22:19
【问题描述】:

我设计了一个休息服务来为用户响应存储在数据库中的图像。该服务工作正常。该服务以 jpg 格式响应图像。如果用户上传 jpg 格式的图片,响应也可以,如果图片是其他格式,则响应无法呈现为图片。我需要为所有输入图像类型构建一个 jpg 转换器或编码器。有没有可能的方法来实现这一点。

【问题讨论】:

  • 是的,有一种可能的方法。你试过什么?
  • 你想在哪里渲染图像?该服务是否可以正常返回图像?有错误信息吗?

标签: java image


【解决方案1】:

你应该看看ImageIO。支持JPEG、PNG、BMP、WBMP、GIF的读写。

JAI API 还提供 TIFF 支持,我之前也为尼康相机使用过 RAW 插件。

查看Working with ImagesJavaDocs 了解更多信息。

更新示例

没有源图像将无法进行适当的测试,但这是基本的工作流程。

我使用File 作为我的输入,但为了演示基本概念,我创建了InputStreamOutputStream(因为ImageIO 可以读/写Files)

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();
}

更新

所以使用上面的代码,我能够将我在paint中创建的PNG文件转换为JPG...

PNG/JPG

您也可以尝试将输入流和输出流转换为 ImageInputStreamImageOutputStream,尽管这通常在您想要查找给定图像格式的提供程序时完成。

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();
}

【讨论】:

  • 嗨 MadProgrammer,我尝试使用 ImageIO。我已经阅读了输入流并创建了一个缓冲图像,并创建了所需的格式。输入文件为 PNG,输出文件为 JPG。输入文件有一条带有白色背景的黑色线条,生成的输出文件包含带有橙色背景的线条。
  • 感谢 MadProgrammer 的更新。但是当我们使用从 ms paint 创建的 png 图像时,相同的代码不起作用。即使我使用相同的 sn-p。
  • 我已经使用 MS Paint 创建的 PNG 对其进行了测试,没有问题。首先尝试隔离/独立测试,看看是否有任何区别,InputStream 可能已损坏...可能需要您先完全上传文件,然后再转换它
  • +1 个很好的例子 + 屏幕。 @wekselva 请参阅 this 替代方法(滚动到答案底部)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 2015-03-06
  • 2015-05-05
  • 2013-11-14
相关资源
最近更新 更多