[英]Store drawable or bitmap in internal storage
我有一個帶有兩個字符串值和一個可繪制對象的對象(或者它可能是位圖-沒關系)。 我從Web獲得圖片。 在我的項目中,我需要將幾個對象保存在ArrayList中以備將來使用。
該ArrayList用來使用自定義適配器填充ListView。
現在,我使用這些方法從文件中寫入和讀取ArrayList。 它使用序列化。
public final class InternalStorage{
private InternalStorage() {}
public static void writeObject(Context context, String key, Object object) throws IOException {
FileOutputStream fos = context.openFileOutput(key, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(object);
oos.close();
fos.close();
}
public static Object readObject(Context context, String key) throws IOException,
ClassNotFoundException {
FileInputStream fis = context.openFileInput(key);
ObjectInputStream ois = new ObjectInputStream(fis);
Object object = ois.readObject();
return object;
} }
問題是可繪制或位圖對象不可序列化。 那么我想做什么來將可繪制對象與ArrayList的每個序列化對象一起存儲? 也許我需要以某種方式將每個存儲的圖像文件與每個ArrayList項目相關聯? 以及如何閱讀呢?
感謝您的回答,對不起,英語不好。
無論如何,您都不希望序列化位圖,因為純像素緩沖區會很大。 在位圖上使用compress方法
ByteArrayOutputStream baos = new ByteArrayOutputStream();
immage.compress(Bitmap.CompressFormat.JPEG, 100, baos);
保存這些圖像的ByteArray,然后可以將其還原。
使用這些功能。
public static byte[] convert(Bitmap bitmap) throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100,stream);
byte[] array = stream.toByteArray();
stream.close();
return array;
}
public static Bitmap convert(byte[] array) {
return BitmapFactory.decodeByteArray(array,0,array.length);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.