【发布时间】: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