我有一个图像作为byte[] ,我需要将此图像保存在数据库中。 我为此使用Active Android库。 我知道db中用于此目的的数据类型应该是BLOB。 我知道byte[]不能直接存储,我知道它应该序列化。 但是当我尝试将其序列化时 - 问题就出现了。
我试图将byte[]转换为String然后将其插入数据库 - 它工作:我将它保存在数据库中。 但是然后,当我从db取回该字符串并将其转换回字节数组时,该数组不等于第一个字节,因此当我尝试将此数组解码为图像时收到
skia:--- SkImageDecoder :: Factory返回null。
我的问题是:如何序列化字节数组,将其保存到数据库中,将其反序列化为字节数组,这将等于第一个? 我的意思是确切的步骤。
我真的在寻找如何解决这个问题很长一段时间,我恳请你不要在这里分享Active Android文档的链接或其他类的TypeSerializer实现的例子 - 我看了很多次。 我需要的是如何逐步解决这个问题的方法。
编辑
我的TypeSerializer的当前代码,使我有机会使用Active Android在数据库中保存字节数组
public class ByteArraySerializer extends TypeSerializer {
@Override
public Class> getDeserializedType() {
return byte[].class;
}
@Override
public Class> getSerializedType() {
return String.class;
}
@Override
public Object serialize(Object o) {
if ( o != null ) {
return new String((byte[]) o);
}
return null;
}
@Override
public Object deserialize(Object o) {
if ( o != null ) {
String str = (String) o;
return str.getBytes();
}
return null;
}
}