我正在设计一个程序,用于在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;
}
}
其他地方可能有错误吗?我附上了一张损坏且未损坏的数据图片。
我还注意到,如果我使用类型TYPE_INT_ARGB转换为BufferedImage,则会大大降低效果。