当我尝试保存用户上传的图像时,我收到以下错误。
java.io.IOException: Object type not supported: com.codename1.ui.Image value: com.codename1.ui.Image@76a29a7
at com.codename1.io.Util.writeObject(Util.java:406)
以下是我的计划。
用户类
public class User implements Externalizable {
private String name;
private Image proImg;
public void externalize(DataOutputStream out) throws IOException {
Util.writeUTF(getName(), out);
Util.writeObject(getProImg(), out);
}
public void internalize(int version, DataInputStream in) throws IOException {
setName(Util.readUTF(in));
setProImg((Image) Util.readObject(in));
}
...
}
StateMachine类
protected void onCreateAccountGui_SaveBtnAction(Component c, ActionEvent event) {
User usr = new User();
usr.setName(findNametxta(c).getText());
usr.setProImg(findProImgGallery(c).getImage());
try
{
storedUser.writeObject("userStore", usr);
}
catch(Exception e)
{
e.printStackTrace();
}
}
答案 0 :(得分:1)
Image
不是Externalizable
类,因为它包含特定于平台的本机图像数据而非字节。
EncodedImage
是Externalizable
,所以你应该使用它。默认情况下,我们创建的所有图片(例如资源)均为EncodedImage
,但如果您拥有Image
或可变图片,则可以使用以下代码将其转换为EncodedImage
:
EncodedImage enc = EncodedImage.createFromImage(img, jpgOrPng);