2016-04-12 2 views
1

Я пытаюсь изменить размер изображения и, что первый я Обращаюсь мой InputStream в забуференном изображение, а затем с помощью этого BufferedImage масштабировать егоImageIO.read (InputStream) дает нуль в BufferedImage

BufferedImage bim=null; 
try { 
    bim=ImageIO.read(myinputstream); 
    } 
    catch (Exception ex) { ex.printStackTrace(); } 

    Image img=bim.getScaledInstance(100, 100, BufferedImage.SCALE_SMOOTH); 

но линия:

bim=ImageIO.read(myinputstream); 

не дает никаких исключений и просто возвращает null in bim. Почему ImageIO не может прочитать мой входной поток. Я использовал этот поток, чтобы записать его на изображение, и он работал нормально, но когда ImageIO читает его, он возвращает null. Я где-то читал, что мне нужно передать объект файла, но почему тогда есть опция. Кто-нибудь может мне помочь .

+1

Данные во входном потоке не являются признанным форматом изображения. – EJP

+0

i m отправка изображения png sir –

+1

Ясно нет. Вы отправляете его как? Вы рассматривали возможность ошибок в отправляющем коде? – EJP

ответ

-1

См. ImageIO.read.

Если зарегистрированный ImageReader не имеет права считать поток, возвращается null.

Я подозреваю, что у вас есть эта проблема. Посмотрите, как вы регистрируете свои ImageReader?

+0

Я читал это, но жаль, что я не понял, Как это решить? :/ –

+0

, поэтому мне нужно передать в imageinputstream вместо входного потока? –

+0

@SyedMuhammadOan - я бы сказал, что нет - форма «InputStream» переносит поток в «ImageInputStream». Я предлагаю вам исследовать читателей, используя [getImageReadersByFormatName] (https://docs.oracle.com/javase/8/docs/api/javax/imageio/ImageIO.html#getImageReadersByFormatName-java.lang.String-). – OldCurmudgeon