【问题标题】:Turning a Bitmap object into a base64 string having issues将位图对象转换为有问题的 base64 字符串
【发布时间】:2011-10-18 11:35:36
【问题描述】:

我有一个简单的应用程序,它从相机中抓取图像,然后传递给我的 onActivityResult() 方法。但是,我无法将位图对象编码为 base64 字符串。 Eclipes 告诉我 byte[] encodedImage = Base64.encode(b, Base64.DEFAULT); 行应该是一个字节 [] 而不是一个字符串,所以这就是我认为问题所在(因此它下面的行试图将其强制为字符串对象)。我的代码在下面,此方法被触发并出现日志,但数据不是 base64。

谁能帮帮我。

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    switch(requestCode){
        case TAKE_PHOTO_CODE:
            if( resultCode == RESULT_OK ){
                Bitmap thumbnail = (Bitmap) intent.getExtras().get("data");
                ByteArrayOutputStream baos = new ByteArrayOutputStream();  
                thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object   
                byte[] b = baos.toByteArray(); 
                byte[] encodedImage = Base64.encode(b, Base64.DEFAULT);
                String encodedImageStr = encodedImage.toString();

                Log.e("LOOK", encodedImageStr);


            }
            // RESULT_CANCELED
        break;          
    }               
}

【问题讨论】:

  • byte[] 的 toString() 不是你想要的。尝试 encodeImageStr = new String(encodedImage, "UTF-8");而是。
  • 问题是,Base64.encode(b, Base64.DEFAULT); 应该返回一个字符串。但是 eclipes 告诉我该对象以 byte[] 形式返回
  • 使用new String(b);创建encodedImageStr
  • 不,您正在考虑 Base64#encodeToString() - 您使用的方法应该返回一个字节数组(例如,它非常适合发布到 HTTP 服务器)。

标签: java android base64 encode


【解决方案1】:

数组对象的 toString 不对数组的内容做任何事情

你应该使用

String encodedImageStr = new String(encodedImage);

或者你可以直接用

转到字符串
String encodedImageStr = Base64.encodeToString(b,Base64.DEFAULT);

【讨论】:

  • 谁能说出 Base64 类的包
【解决方案2】:
 Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
                byte[] byteArray = stream.toByteArray();
                encode = Base64.encodeBytes(byteArray);
                try {
                    byte[] decode = Base64.decode(encode);
                    Bitmap bmp = BitmapFactory.decodeByteArray(decode, 0,
                            decode.length);
                    imgview_photo.setImageBitmap(bmp);
                                }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 2014-07-21
    相关资源
    最近更新 更多