Chciałbym przechowywać moje obrazy w sqlite db, w blob-s, i może szyfrować je. Czy można używać urządzenia Universal Universal Image Advisor z obrazami z bazy danych SQLite?Czy Universal Image Loader dla Androida działa z obrazami z sqlite db?
Odpowiedz
UIL nie obsługuje obrazów z SQLite DB po wyjęciu z pudełka. Ale możesz dodać to wsparcie samemu, wystarczy wymyślić nową nazwę schematu/protokołu (np. db: //), zaimplementować własną ImageDownloader
i ustawić ją w konfiguracji.
Na przykład:
Pozwala wybrać własny system db
więc nasze URI będzie wyglądać "db: // ...".
Następnie zaimplementuj ImageDownloader
. Powinniśmy wyłapać URI z naszego schematu, przeanalizować go, znaleźć potrzebne dane w DB i utworzyć dla niego InputStream
(może to być ByteArrayInputStream
).
public class SqliteImageDownloader extends BaseImageDownloader {
private static final String SCHEME_DB = "db";
private static final String DB_URI_PREFIX = SCHEME_DB + "://";
public SqliteImageDownloader(Context context) {
super(context);
}
@Override
protected InputStream getStreamFromOtherSource(String imageUri, Object extra) throws IOException {
if (imageUri.startsWith(DB_URI_PREFIX)) {
String path = imageUri.substring(DB_URI_PREFIX.length());
// Your logic to retreive needed data from DB
byte[] imageData = ...;
return new ByteArrayInputStream(imageData);
} else {
return super.getStreamFromOtherSource(imageUri, extra);
}
}
}
Następnie ustawiamy tę ImageLoader
do konfiguracji:
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
...
.imageDownloader(new SqliteImageDownloader(context))
.build();
ImageLoader.getInstance().init(config);
A potem możemy zrobić następujące czynności, aby wyświetlić obraz z DB:
imageLoader.displayImage("db://mytable/13", imageView);
dziękuję za wskazówki, spróbuję tego :) – Tamas
Ok, właśnie to zrobiłem i działa świetnie na słabszych telefonach, na przykład galaktycznego asa, ładowanie obrazu 10K z db zajmuje około 20 ms. Ale kiedy uruchomię ten sam kod na nexusie 4 lub galaktyce s3, ładowanie tego samego obrazu 10k zajmuje około 1-3 SEKUND :) Jakieś pomysły, dlaczego tak się stało? – Tamas
Aby calibrować, mój kod jest taki sam, jak ten, który wkleiłeś, z wyjątkiem tego, że jedna linia musi zostać zastąpiona: byte [] imageData = db.getImageData (imageId); Odczyt db trwa 4-10ms na nexus 4, ale wyświetlenie obrazu zajmuje 1-3 sekundy. Poza ustawieniami imagedownloader, używam ustawień domyślnych wszędzie. – Tamas
- 1. Pamięć podręczna Universal Image Loader
- 2. Jak korzystać z Universal Image Loader
- 3. Android: Universal Image Loader Załaduj duży obraz
- 4. Łączenie CoverFlow i Universal Image Loader
- 5. Korzystanie z programu Universal Image Loader do lokalnego ładowania zasobów
- 6. Sprawdź, czy obraz jest w pamięci podręcznej - Universal Image Loader
- 7. Android Studio fail add libs Universal Image Loader
- 8. Android Universal Image Loader - jak ustawić specyfikację poprawnie?
- 9. Jak ustawić niestandardowy program do pobierania w Universal Image Loader?
- 10. C++ platforma Image Loader dla OpenGL
- 11. Android GoogleMap 2 aktualizuje informacje dynamicznie w InfoWindow z ImageView poprzez Universal Image loader
- 12. Obrazy nie są buforowane lokalnie (przy użyciu programu Universal Image Loader) - czas ładowania wolnego obrazu
- 13. Pokaż nieokreślony pasek postępu podczas ładowania obrazu przy użyciu programu Universal Image Loader
- 14. Pakowanie SQLite DB z moją aplikacją
- 15. Utwórz pusty sqlite db z wiersza poleceń
- 16. Android HTML.fromHTML() z obrazami?
- 17. Jak utworzyć model EER z sqlite db
- 18. inspekcja Androida sqlite i IntelliJ
- 19. Praca z obrazami w aplikacji offline HTML5?
- 20. Czy można utworzyć encodeb64 z obiektu Image?
- 21. DB-In DB dla Entity Framework 4
- 22. Tabela normalna a tabela wirtualna SQLite DB
- 23. Słowo kluczowe Live() nie działa przy ładowaniu z dynamicznymi obrazami html
- 24. Out Of błąd pamięci z obrazami
- 25. Czy pliki DB SQLite mogą być tylko do odczytu?
- 26. Heroku db: push nie działa z segfaultem
- 27. Używanie muru z obrazami załadowanymi
- 28. Czy mogę używać postów jQuery z przesyłanymi obrazami?
- 29. Załaduj IPA z Application Loader
- 30. Wybór SQLite z instrukcji LIKE nie działa?
Czy próbowałeś go używać? – Luksprog
Używam go teraz, aby załadować obrazy z systemu plików. Nie widziałem żadnych metod w dokumentach ani źródle, które akceptowałyby bajt [] jako dane wejściowe. Kiedy załaduję bitmapę z bazy danych, która zwróci bajt [] .. – Tamas