-2

1 つのプロジェクトから sqlite データベースにイメージをバイト配列として保存しています。次に、事前設定されたテーブルを別のプロジェクトで使用します

しかし問題は、Bitmap Factory が null になることです。

画像を保存するコード:

Bitmap myLogo = BitmapFactory.decodeResource(getResources(), arr[i]);
ByteArrayOutputStream stream1 = new ByteArrayOutputStream();
myLogo.compress(Bitmap.CompressFormat.JPEG, 100, stream1);
b = stream1.toByteArray();

画像を取得するコード:

BitmapFactory.Options options = new BitmapFactory.Options();
decodedByte = BitmapFactory.decodeByteArray(Image, 0,Image.length, options);
System.out.println("Image = " + Image);
System.out.println("decodedByte = " + decodedByte);

ここで、Image は長さ 12 の byteArray(Image) を返しています。しかし、bitmap(decodedByte) は null 値を返しています。

私は多くの方法を試しましたが、解決策を見つけることができません。助けてください!

4

2 に答える 2

0

options パラメータなしで decodeByteArray を試しましたか? この場合は駄目だと思います。

いずれにせよ、画像の URI を sqlite データベースにバイト配列ではなく文字列として格納することをお勧めします。

URI を取得するには:

        String path = Images.Media.insertImage(getContentResolver(), mylogo,
                "title", null);

        Uri uriMyLogo = Uri.parse(path);

        String uriString = uriMyLogo.toString() ;

そしてURIから画像を取得する

                Uri uriLogo = Uri.parse(uriString);

                Bitmap logo = null;
                try {
                    logo = Media.getBitmap(this.getContentResolver(), uriLogo);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }

思うように管理できない場合の参考になれば幸いです。

于 2013-07-22T12:44:51.147 に答える
0

これはビットマップから文字列への私の関数です

    public String BitMapToString(Bitmap bitmap) {
    try {
        Bitmap encogida = Bitmap.createScaledBitmap(bitmap, 226, 180, true);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        encogida.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] b = baos.toByteArray();
        return org.kobjects.base64.Base64.encode(b);
    } catch (Exception ex) {
        Conexiones.escribirLog(Log.getStackTraceString(ex),
                getString(R.string.versionReal));
        Log.e("ERROR BitMapToString ", ""); // ex.getMessage());
        return "";
    }
}

役立つことを願っています

于 2013-07-22T12:10:18.460 に答える