我有一個圖像爲byte[]
,我需要將此圖像保存在數據庫中。我爲此使用了活動Android庫。我知道db中爲此目的的數據類型應該是BLOB。我知道byte[]
不能直接存儲,我知道它應該被序列化。但是,當我嘗試序列化它時 - 出現問題。如何序列化字節數組並將其存儲到數據庫中使用主動android?
我試圖將byte[]
轉換爲String
,然後將它插入數據庫 - 它工作:我將它保存在數據庫中。但是,當我從db獲取這個字符串並將其轉換回字節數組時,這個數組不等於第一個,所以當我嘗試將此數組解碼爲我收到的圖像時
skia: --- SkImageDecoder :: Factory返回null。
我的問題是:我應該怎麼做序列化字節數組,將其保存到數據庫,反序列化它返回到字節數組將等於第一個?我的意思是正確的步驟。
我真的在尋找如何解決這個問題很長一段時間,我懇請您不要在這裏分享鏈接到活動Android文檔或其他類的實例TypeSerializer
的實例 - 我看了很多次。 我需要的是如何一步一步解決這個問題的方法。
編輯
我TypeSerializer的本次代碼這給了我機會,在數據庫保存字節數組的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;
}
}
字節數組在技術上已經序列化。序列化的要點是將對象轉換爲字節數組格式。而且一個字節數組已經是字節數組格式。 :-)也許你應該分享一些代碼,以便我們看到你想要做的事情。 –
在這種情況下,序列化意味着將對象轉換爲可放置在數據庫中的類型。單字節可以很容易地存儲,但字節數組不是。請參閱我的TypeSerializer的代碼。 –
如果你正在處理sqlite,你可以把一個字節數組直接放到表格列中。 –