Java ImageIO.write возвращает ложь

Я хочу сохранить BufferedImage (с именем «результат»):

boolean bres = ImageIO.write(result, ".png", new File(saveP)); 

Но bres всегда равен нулю.

Этот

ImageIO.getWriterFormatNames()

возвращает это:

jpg BMP bmp JPG jpeg wbmp png JPEG PNG WBMP GIF gif

Я должен быть в состоянии сохранить как png.

И тип BufferedImage "2"

BufferedImage@137695c: type = 2 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=ff000000 IntegerInterleavedRaster: width = 720 height = 576 #Bands = 4 xOff = 0 yOff = 0 dataOffset[0] 0

Тип 2 — «ARGB».

Почему я не могу сохранить BufferedImage?

РЕДАКТИРОВАТЬ: saveP = "ex000567.png"


person user3363881    schedule 13.03.2014    source источник
comment
Можете ли вы предоставить подробную информацию о результате и saveP и изменить .png на png   -  person Kick    schedule 13.03.2014
comment
Все детали результата находятся на объекте BufferedImage@137695c.   -  person user3363881    schedule 13.03.2014


Ответы (2)


private static void savePNG( final BufferedImage image, final String path ){
        try {
            RenderedImage rendImage = image;
            ImageIO.write(rendImage, "PNG", new File(path));
        } catch ( IOException e) {
            e.printStackTrace();
        }
    }

Протестируйте эту функцию. Этот работает для меня.

Важным изменением является то, что второй параметр ImageIO.write изменен с ".png" на "PNG" (нижний регистр "png" также будет работать), обратитесь к выходным данным ImageIO.getWriterFormatNames() для корректных имен.

person schnawel007    schedule 13.03.2014
comment
Проблема с форматом изображения - person Kick; 13.03.2014

FormateName должно быть "png", а не ".png"

person Alya'a Gamal    schedule 13.03.2014