在Android

时间:2016-01-21 10:03:04

标签: java android base64

我正在使用相机捕捉图像。我将文件保存在公共照片目录中,并将Uri保存到该文件中。

我想将图片保存在Base64 String中并将其放在HashMap上,然后将其放入XML文件中。

protected Void doInBackground(Void...voids) {
        options.inJustDecodeBounds = false;
        //Bitmap bmp = BitmapFactory.decodeFile(imageFilePath,options);
        InputStream in = null;
        try {
            in = getContentResolver().openInputStream(Uri.parse(mCurrentPhotoPath));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        options.inSampleSize = 2;
        Bitmap image = BitmapFactory.decodeStream(in,null,options);
        int imgHeight = image.getHeight();
        int imgWidth = image.getWidth();
        while(imgHeight>2000){
            imgHeight = imgHeight / 2;
        }
        while(imgWidth>2000){
            imgWidth = imgWidth / 2;
        }

        Bitmap test = Bitmap.createScaledBitmap(image,imgWidth,imgHeight,false);

        String stest = base64EncodeDecode.encodeToBase64(test);


        items.put("image",base64EncodeDecode.encodeToBase64(test);
        return null;
}

Base64编码时间过长。 encodeToBase64 方法

public String encodeToBase64(Bitmap image) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] b = baos.toByteArray();

    return Base64.encodeToString(b, Base64.DEFAULT);
}

你可以告诉我在编码时是否做错了吗?

我希望我的问题很明确。

亲切的问候!

1 个答案:

答案 0 :(得分:0)

如果您收到!!! FAILED BINDER TRANSACTION !!!错误可能是因为您将大量数据传递给另一个Activity,则可以发送多少限制。尝试将图片压缩到50%或30%image.compress(Bitmap.CompressFormat.JPEG, 50, baos);