У меня есть следующий код 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 в обоих случаях и не знаю, что происходит.
Изменить: еще одно свидетельство того, что я схожу с ума: я напечатал массив байтов img в файл, используя FileOutputStream в Ubuntu и OSX, затем сравнил два файла, и они абсолютно одинаковы. Это означает, что либо ByteArrayInputStream отличается, либо (что более вероятно) второй ImageIO.read по какой-то причине не работает.
Exception
брошен? - person Uwe Plonus   schedule 18.07.2013