Zapis i odczyt bitmap w katalogu aplikacji Android

By | 21 maja 2015

W tym przykładzie pokażę, w jaki sposób zapisywać bitmapy w postaci plików w katalogu aplikacji. A teraz taka mała dygresja dlaczego warto zapisywać i odczytywać często używane dane z dysku zamiast generować je na bieżąco, czy pobierać z internetu.

Aktualnie większość telefonów pod kontrolą systemu Android posiada kilku rdzeniowe procesory i całkiem dużo pamięci RAM, jednak to wcale nie oznacza, że teraz developerzy nie muszą optymalizować aplikacji. Okazuje się, że nadal muszą, ponieważ procesory ARM nie są tak wydajne jak domowe pecety, a z drugiej strony jesteśmy ograniczeni pamięcią RAM, która jest przydzielona do wirtualnej maszyny JAVA. Warto więc często używane dane przechowywać na dysku w postaci cache (zwłaszcza jeżeli są to dane wyciągane z API systemu), albo gdy aktualnie nie są używane, tak żeby móc ze spokojem zwolnić pamięć, a w razie potrzeby znów załadować plik.

public static void save (Context context, Bitmap bmp, String fileName){
    FileOutputStream fos = null;
    try {
        fos = context.openFileOutput(fileName + ".png",Context.MODE_PRIVATE);
        bmp.compress(Bitmap.CompressFormat.PNG, 100, fos); // w miejscu 100 wpisujemy kompresje (mniejsza wartość = silniejsza kompresja)
    } catch (Exception e) {
        e.printStackTrace();
    } finally{
        try {
            if (fos != null) {
                fos.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
public static Bitmap load (Context context, String fileName){
    return BitmapFactory.decodeFile(context.getFilesDir().getAbsolutePath() + "/" + fileName + ".png");
}

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *