2016-10-27 5 views
0

私はSQLiteテーブルにBLOB型のカラムを持ち、drawableからイメージのbyte []をそこに保存しています。検索するとき今、私はカーソルBitmapFactory.decodeStream(inputStream)はSQLiteからイメージを取得するときにnullを返します

cursor.getBlob(cursor.getColumnIndex(SQLiteHelper.col_product_image)) 

し、[]上記のコード

ByteArrayInputStream inputStream = new ByteArrayInputStream(bb); 
      Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 
      iv.setImageBitmap(bitmap); 

から取得したが、何も画像に表示されていないバイトを表示するには、次のコードを使用してを使用してブロブにアクセスしています表示されるのはBitmapFactory.decodeStream(inputStream); です。

BBの値である[91、66、64、52、51、54、102、51、53、51、48、0]

ヘルプ!

+0

'bb' ??? bbとは何ですか?完全な再現可能なコードを表示する必要があります。 – greenapps

+0

'イメージのバイト[]を保存するf何バイトを入れるのか、何バイトから始めるのかを調べます。 – greenapps

答えて

0

バイナリデータが正しく保存されていません。

byte[]

toString()出力ではなく、バイト配列自体のように見える文字列

[[email protected] 

バイト

91, 66, 64, 52, 51, 54, 102, 51, 53, 51, 48, 0 

マップ。

さらに、画像などの大きな(2MB以上の)バイナリデータを格納するためにAndroid sqliteは機能しません。イメージをファイルシステムに保存し、パスをデータベースに保存する方が良いでしょう。

+0

私に参照リンクを提供できますか? –

関連する問題