-2

我将图像作为字节数组存储在一个项目的 sqlite 数据库中。然后我在另一个项目中使用预先填充的表

但问题是位图工厂结果为空。

图片存储代码:

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) 返回空值。

我尝试了很多方法,但找不到解决方案。请帮忙!

4

2 回答 2

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 回答
0

你试过没有 options 参数的 decodeByteArray 吗?我认为在这种情况下它是没有用的。

无论如何,最好将图像 URI 存储为 String 而不是 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 回答