Vorrei archiviare le mie immagini in un db sqlite, in blob-s, e magari crittografarle. È possibile utilizzare Android-Universal-Image-Loader con immagini da un database SQLite?Il caricatore di immagini universali per Android può funzionare con immagini da sqlite db?
risposta
UIL non supporta immagini di SQLite DB fuori dalla scatola. Ma puoi aggiungere tu stesso questo supporto, devi solo creare un nuovo nome schema/protocollo (ad esempio db: //), implementare il proprio ImageDownloader
e impostarlo sulla configurazione.
Ad esempio:
Lets scegliere proprio schema db
così i nostri URI sarà simile "db: // ...".
Quindi implementare ImageDownloader
. Dovremmo prendere gli URI con il nostro schema, analizzarlo, trovare i dati necessari in DB e creare InputStream
per questo (può essere 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);
}
}
}
Poi abbiamo impostato questo ImageLoader
alla configurazione:
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
...
.imageDownloader(new SqliteImageDownloader(context))
.build();
ImageLoader.getInstance().init(config);
E poi possiamo fare segue per visualizzare l'immagine da DB:
imageLoader.displayImage("db://mytable/13", imageView);
grazie per la tua guida, ci proverò :) – Tamas
Ok, l'ho appena fatto e funziona benissimo sui telefoni più deboli, ad esempio l'asso della galassia, ci vogliono circa 20ms per caricare un'immagine da 10K da db. Ma quando eseguo lo stesso codice su nexus 4 o galaxy s3, ci vogliono circa 1-3 SECONDI per caricare la stessa immagine 10k :) qualche idea del perché questo sarebbe il caso? – Tamas
Per eseguire la conversione, il mio codice è uguale a quello incollato, tranne che una riga che doveva essere sostituita: byte [] imageData = db.getImageData (imageId); La lettura db richiede circa 4-10 ms sul nexus 4, ma la visualizzazione dell'immagine richiede 1-3 secondi. Oltre alle impostazioni di imagedownloader, sto usando le impostazioni predefinite ovunque. – Tamas
- 1. java.lang.OutOfMemoryError sull'archiviazione di immagini in sqlite db
- 2. Accesso alle immagini protette nel caricatore universale di immagini
- 3. Webpack - Richiedi immagini usando il caricatore di file
- 4. Webpack - caricatore sass non trova immagini
- 5. Sfondo nero sull'immagine caricata con caricatore di immagini universitario
- 6. Caricatore di immagini cross platform C++ per OpenGL
- 7. Android HTML.fromHTML() con immagini?
- 8. SQLITE Blob OR file system per immagini
- 9. Lettura e scrittura di immagini su un DB SQLite per iPhone
- 10. Android Salvare le immagini su SQLite o SDCard o memoria
- 11. ListView come nell'app campione universale di caricatore di immagini
- 12. Android MediaStore sqlite db posizione
- 13. Caricatore di immagini universale - svuota la cache manualmente
- 14. Libreria di elaborazione delle immagini per Android?
- 15. Montare immagini dell'emulatore Android
- 16. Crea video da immagini
- 17. Libreria di modifica delle immagini per Android
- 18. Docker cache immagini hub non sembra funzionare
- 19. Immagini disegnabili Android dall'URL
- 20. Android: Bug con ThreadSafeClientConnManager download delle immagini
- 21. immagini Caricamento di un server PHP da Android
- 22. python search con immagini google immagini
- 23. Visualizzazione immagini con effetto giostra in Android
- 24. Recupera immagini da mysql-php (Android)
- 25. Scorri tra le immagini filtrate per Android
- 26. Assegnazione di immagini da URL con Dragonfly
- 27. Salva più immagini in Android
- 28. Libreria di elaborazione immagini Android
- 29. Caricatore di file .OBJ per Android OpenGL
- 30. algoritmo per il confronto di immagini
Forse si è tentato di usarlo? – Luksprog
Lo sto usando ora per caricare solo immagini dal file system. Non ho visto alcun metodo nei documenti o nella sorgente che accetti un byte [] come input. Quando carico la bitmap dal db, restituirebbe un byte [] .. – Tamas