Java 如何将ImageIcon转换为字符串以存储在JSON中

Java 如何将ImageIcon转换为字符串以存储在JSON中,java,json,imageicon,Java,Json,Imageicon,您好,提前谢谢您的帮助 我正在做一个rpg角色生成器。每个字符都存储为JSON文件,我想包括字符图像。这是作为ImageIcon存储的,但不能存储在JSON中 如何将ImageIcon转换为字符串并再次转换 这就是我到目前为止所做的: public ImageIcon getImageIcon() { byte b[]; ByteArrayInputStream bi; ObjectInputStream si; ImageIcon image = null;

您好,提前谢谢您的帮助

我正在做一个rpg角色生成器。每个字符都存储为JSON文件,我想包括字符图像。这是作为ImageIcon存储的,但不能存储在JSON中

如何将ImageIcon转换为字符串并再次转换

这就是我到目前为止所做的:

public ImageIcon getImageIcon() {
    byte b[];
    ByteArrayInputStream bi;
    ObjectInputStream si;
    ImageIcon image = null;

    try {
        b = this.imageIcon.getBytes(); 
        bi = new ByteArrayInputStream(b);
        si = new ObjectInputStream(bi);
        image = (ImageIcon) si.readObject();
    } catch (IOException | ClassNotFoundException ex) {
        System.out.println(ex);
    }
    return image;
}

public void setImageIcon(ImageIcon imageIconIn) {
    ByteArrayOutputStream bo;
    ObjectOutputStream so;
    try{
        bo = new ByteArrayOutputStream();
        so = new ObjectOutputStream(bo);
        so.writeObject(imageIconIn);
        so.flush();
        this.imageIcon = bo.toString();
    } catch (IOException ex){
        System.out.println(ex);
    }
}
问题是将字符串转换回ImageIcon时出现以下错误:

java.io.StreamCorruptedException: invalid stream header: EFBFBDEF
我认为setImageIcon()方法很好,但我不确定如何修复getImageIcon()方法

我正在使用Java1.8和GSON2.8.0


再次感谢您的帮助。

您的图标应存储在:

  • 使用编码将JSON文件内联为字符串

    • 看到这个了吗
  • 在单独的文件中,文件名以字符串形式存储在JSON中

    • {“iconFile”:“/characters/dwarf.png”}

我的想法是,您可以将图像转换为base64字符串,然后将其存储。