簡體   English   中英

將繪圖或位圖存儲在內部存儲中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM