当JavaFX Image转换为BufferedImage并再次返回时,图像被破坏了?

时间:2014-03-31 16:25:10

标签: java image io javafx bytearray

我正在设计一个程序,用于在JavaFX平台上存储地理数据,每当我将图像从JavaFX图像转换为BufferedImage,然后转换为Buffered Image然后转换为JavaFX,然后使用ByteArray(用于序列化)再次成像,它有点腐败。这是我用来来回转换的代码:

private byte [] loadImageData (Image image){
    try{

        //creating a byte array output stream from the Image           
        BufferedImage bi = SwingFXUtils.fromFXImage(image, null);
        ByteArrayOutputStream baos = new ByteArrayOutputStream(1000);
        ImageIO.write(bi, "png", baos );


        baos.flush();       
        byte[] imageData = baos.toByteArray();
        baos.close();

        return imageData;
    }catch (Exception e){
        e.printStackTrace();
    }
}

public Image restoreMapData (byte[] data){
    try{
        //converting back to an image
        InputStream in = new ByteArrayInputStream(data);
        BufferedImage bi = ImageIO.read(in);


        return SwingFXUtils.toFXImage(bi, null);


    }catch(Exception e){
        e.printStackTrace();
        return null;
    }
}

其他地方可能有错误吗?我附上了一张损坏且未损坏的数据图片。corrupted

uncorrupted

我还注意到,如果我使用类型TYPE_INT_ARGB转换为BufferedImage,则会大大降低效果。

0 个答案:

没有答案