ImageIO没有在Ubuntu上工作

时间:2013-07-18 15:03:51

标签: java macos ubuntu javax.imageio

我有以下java代码,它将图像写入字节数组然后返回到图像中:

BufferedImage bi = ImageIO.read(new File("1.png"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bi,"png",baos);
byte[] img = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(img);
BufferedImage bif = ImageIO.read(bais);

在OS X上,这完全正常,但在Ubuntu上,bif(最终图像)最后变为空,这意味着从ByteArrayInputStream读取时出现问题。我在两种情况下都使用oracle jdk而且不知道发生了什么。

编辑:更多证据表明我疯了:我在Ubuntu和OSX上使用FileOutputStream将img字节数组打印到文件中,然后将两个文件区分开来,它们完全相同。这意味着ByteArrayInputStream不同或者(更有可能)第二个ImageIO.read由于某种原因不起作用。

1 个答案:

答案 0 :(得分:2)

Ubuntu服务器通常以无头模式运行,这会导致java图像操作出现问题。

http://www.oracle.com/technetwork/articles/javase/headless-136834.html

尝试调整你的jvm启动设置以允许无头运行,它应该修复它。