Ich möchte meine Bilder in einer sqlite db, in Blob-s speichern und sie vielleicht verschlüsseln. Ist es möglich, den Android-Universal-Image-Loader mit Bildern aus einer SQLite-Datenbank zu verwenden?Kann Universal Image Loader für Android mit Bildern von SQLite db arbeiten?
Antwort
UIL unterstützt keine Bilder von SQLite DB out of the box. Aber Sie können diese Unterstützung selbst hinzufügen, Sie brauchen nur einen neuen Schema-/Protokollnamen (z. B. db: //), implementieren Sie eigene ImageDownloader
und setzen Sie es auf Konfiguration.
Zum Beispiel:
Lets eigenen Schema wählen db
so unsere URIs wie aussehen wird "db: // ...".
Dann implementieren Sie ImageDownloader
. Wir sollten URIs mit unserem Schema fangen, es analysieren, benötigte Daten in DB finden und InputStream
dafür erstellen (es kann ByteArrayInputStream
sein).
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);
}
}
}
Dann setzen wir diese ImageLoader
zur Konfiguration:
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
...
.imageDownloader(new SqliteImageDownloader(context))
.build();
ImageLoader.getInstance().init(config);
Und dann können wir von DB folgenden anzuzeigen Bild machen:
imageLoader.displayImage("db://mytable/13", imageView);
danke für Ihre Anleitung, ich werde das versuchen :) – Tamas
Ok, ich habe das getan, und es funktioniert zum Beispiel auf schwächeren Handys Das Galaxy Ass dauert etwa 20ms, um ein 10K-Bild von db zu laden. Aber wenn ich den gleichen Code auf dem Nexus 4 oder Galaxy S3 laufen lasse, dauert es etwa 1-3 Sekunden, um das gleiche 10k Bild zu laden :) irgendwelche Ideen, warum dies der Fall wäre? – Tamas
Um zu kalibrieren, ist mein Code der gleiche wie der, den Sie eingefügt haben, außer dass eine Zeile ersetzt werden musste: byte [] imageData = db.getImageData (imageId); Die db-Lesung dauert etwa 4-10ms auf dem Nexus 4, aber die Anzeige dauert 1-3 Sekunden. Abgesehen von den Imagedownloader-Einstellungen verwende ich die Standardeinstellungen überall. – Tamas
- 1. Universal Image Loader behalten Verhältnis
- 2. Universal Image Loader mit Cardview
- 3. Wie kann ich nur Bild mit Universal-Image-Loader herunterladen
- 4. Universal Image Loader von Schwarz einblendung?
- 5. Android Universal Image Loader-Anfragen mit derselben URL werden abgebrochen.
- 6. Universal Image Loader gerundet BitmapDisplayer Ausgaben
- 7. Universal Image Loader kann Bilder manchmal nicht laden
- 8. Zeige Miniaturansichten (Bitmaps) in Universal Image Loader
- 9. So verwenden Sie Universal Image Loader
- 10. Android Universal Image Loader nicht genügend Speicher Fehler
- 11. Android Studio fail hinzufügen libs Universal Image Loader
- 12. So verwenden Sie Universal Image Loader zum lokalen Laden von Ressourcen
- 13. Größe der Bitmap nach dem Laden mit Universal Image Loader
- 14. ListView wie in Universal Image Loader Beispiel-App
- 15. Holen Sie Image vom Server mithilfe von URL mit Universal Image Loader
- 16. Image-Ecken werden nicht abgerundet, wenn Universal Image Loader verwendet wird
- 17. Android: Volley Image Loader mit Galerie
- 18. Wie erzwingen Sie eine Cache-Löschung mit Universal Image Loader Android?
- 19. Android: Universal-Bild Loader - neues Bild hinzufügen
- 20. Wie benutzerdefinierte Downloader in Universal Image Loader festlegen?
- 21. Android SQLITE arbeiten nicht
- 22. Universal-Image Loader galt nicht die displayImageOptions in loadimage
- 23. Wiederholung des Bilds beim Scrollen in der Android-Rasteransicht mit Universal Image Loader
- 24. Android GoogleMap 2 aktualisieren Informationen dynamisch in InfoWindow mit ImageView über Universal Image Loader
- 25. Webpack Image Loader funktioniert nicht
- 26. Android Universal Image Loader - Wie lege ich die Spezifikationen korrekt fest?
- 27. Android speichert Bildpfad in SQLite DB
- 28. Android populate ListView von Sqlite DB
- 29. Implement universal Bild loader auf benutzerdefinierte listvew Android
- 30. Unbestimmte ProgressBar beim Laden des Bildes mit Universal Image Loader anzeigen
Hast du es versucht mit? – Luksprog
Ich benutze es jetzt, um nur Bilder aus dem Dateisystem zu laden. Ich sah keine Methoden in den Dokumenten oder die Quelle, die ein Byte [] als Eingabe akzeptieren würde. Wenn ich die Bitmap von der DB lade, würde das ein Byte [] zurückgeben. – Tamas