2013-04-26 9 views
12

イメージをsqlite db、blob-sに保存し、それらを暗号化したいと考えています。 Android-Universal-Image-Loaderをsqliteデータベースの画像と併用することはできますか?アンドロイドのユニバーサル画像ローダーはsqlite dbの画像で動作できますか?

+0

あなたがそれを使用してみましたしましたか? – Luksprog

+0

ファイルシステムからイメージをロードするために今使っています。私は入力としてbyte []を受け入れる文書やソースのメソッドを見ませんでした。 dbからビットマップを読み込むと、バイト[] .. – Tamas

答えて

21

UILは、SQLite DBのイメージをサポートしていません。しかし、あなたはこのサポートを自分で追加することができます。新しいスキーム/プロトコル名(例えばdb://)を用意して、ImageDownloaderを実装して設定してください。例えば

はとても私たちのURIが"// ...デシベル" のようになります。自分のスキームdbを選択できます。

ImageDownloaderを実装します。私たちは私たちのスキームでURIを捕捉し、それを解析し、必要なデータをDBで見つけ出し、InputStream(それは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); 
     } 
    } 
} 

はその後、我々はコンフィギュレーションにこのImageLoaderを設定します。

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) 
     ... 
     .imageDownloader(new SqliteImageDownloader(context)) 
     .build(); 

ImageLoader.getInstance().init(config); 

そして、我々は、DBからの画像を表示するには、次のことが可能です。

imageLoader.displayImage("db://mytable/13", imageView); 
+0

あなたのガイダンスに感謝します。私はそれを試してみます:) – Tamas

+0

OK、私はちょうどやった、弱い携帯電話で、素晴らしい作品銀河系のエースです.dbから10Kの画像を読み込むのに20msほどかかります。しかし、同じコードをnexus 4やgalaxy s3で実行すると、同じ10k画像をロードするのに約1〜3秒かかります:)なぜこれが当てはまるのでしょうか? – Tamas

+0

私のコードは、あなたが貼り付けたコードと同じですが、置き換えが必要な行は1つです:byte [] imageData = db.getImageData(imageId); データベースの読み取りにはネクサス4では約4〜10msかかりますが、画像の表示には1〜3秒かかります。 imagedownloaderの設定以外に、私はどこでもデフォルトの設定を使用しています。 – Tamas

関連する問題