次の 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 (最終イメージ) が最後に null になります。これは、ByteArrayInputStream からの読み取りに問題があることを意味します。どちらの場合も oracle jdk を使用していますが、何が起こっているのかわかりません。
編集:私が狂っているというより多くの証拠:UbuntuとOSXでFileOutputStreamを使用してimgバイト配列をファイルに出力し、2つのファイルを比較しましたが、それらはまったく同じです。これは、ByteArrayInputStream が異なるか、(より可能性が高い) 2 番目の ImageIO.read が何らかの理由で機能していないことを意味します。