我正在使用相机捕捉图像。我将文件保存在公共照片目录中,并将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);
}
你可以告诉我在编码时是否做错了吗?
我希望我的问题很明确。
亲切的问候!
答案 0 :(得分:0)
如果您收到!!! FAILED BINDER TRANSACTION !!!
错误可能是因为您将大量数据传递给另一个Activity
,则可以发送多少限制。尝试将图片压缩到50%或30%image.compress(Bitmap.CompressFormat.JPEG, 50, baos);