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
Можете ли да предоставите подробности за резултата и да запазите P и да промените .png на png   -  person Kick    schedule 13.03.2014
comment
Всички подробности за резултата са на Object 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