4 回答

TA贡献1827条经验 获得超9个赞
Java 在 base64 字符串中使用空格对位图进行解码,请尝试以下操作:encodedString.replaceAll("\\s+","");

TA贡献1982条经验 获得超2个赞
试试这个:
public String encodeTobase64(Bitmap image) {
Bitmap immagex=image;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String imageEncoded = Base64.encodeToString(b,Base64.DEFAULT);
Log.e("EncodedImage: ", imageEncoded);
return imageEncoded;
}
在活动结果() 中使用下面的代码
InputStream imageStream = null;
try {
imageStream = this.getContentResolver().openInputStream(selectedImage);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
encodeTobase64(yourSelectedImage);

TA贡献1825条经验 获得超6个赞
您可以尝试通过您选择的文件的路径来获取位图:
在您的 onActivity结果
Uri targetUri = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(targetUri,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
//getting the actual path of the file
String path = cursor.getString(columnIndex);
cursor.close();
Bitmap bm = BitmapFactory.decodeFile(path);
//your encoding function is ok
encodedString = encodeImage(selectedImage);

TA贡献1895条经验 获得超7个赞
右。。我已经找到了答案。基本上,Android认为在我的字符串中插入多个空格很有趣。
通过执行此操作,您可以将其全部删除:
activity.getEncodedString().replaceAll("\s+","")
添加回答
举报