0

バイトをビットマップに変換する必要があり、それをイメージビューに設定します

ImageView の Bitmap を Byte に変換するメソッドがあり、後で挿入します。

public static byte[] ConvertDrawableToByteArray(Drawable drawableResource) {

             Bitmap imageBitmap = ((BitmapDrawable) drawableResource).getBitmap();
            ByteArrayOutputStream imageByteStream = new ByteArrayOutputStream();
            imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, imageByteStream);
            byte[] imageByteData = imageByteStream.toByteArray();
            return imageByteData;

}

そして、データベースから画像を取得して ImageView に表示したいときは、

 //--
             byte[] image_b   = c.getBlob(4);
             Bitmap b = BitmapFactory.decodeByteArray(image_b, 0, image_b.length);
             img.setImageBitmap(b);

しかし、それは何も返しません

何が問題なのですか、助けてください

どうもありがとう

4

3 に答える 3

1

カーソルが何も返さなかったからだと思います。Android のカーソル制限はクエリごとに 1 mb であるため、Blob が大きすぎて一度にクエリを実行できない可能性があります。stacktrace/logcat をもう一度確認してください。Blob のサイズが問題である場合は、バイトを小さいサイズに分割して保存してみてください。あなたのデータベース

于 2013-03-19T16:25:24.333 に答える
0

私はこれが好きな問題がどこにあるのか理解していません:String t = image_b.toString(); System.out.println("それが私に与えるもの" +t); logcat で次の行を見つけます: 03-19 17:01:28.167: I/System.out(1019): what it give me[B@41f1f5c0

それは何かを返すことを意味しますが、表示されないか、バイト[B@41f1f5c0が正しくありません

于 2013-03-19T18:25:26.137 に答える
0

以下を試してみて、うまくいくかどうかをお知らせください。

String[] filePathColumn = { MediaStore.Images.Media.DATA };
        Cursor cursor = resolver.query(imageUri, filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex);
        cursor.close();
        return BitmapFactory.decodeFile(picturePath);
于 2013-03-19T16:26:51.493 に答える