我正在使用相机捕获图像。 我将文件保存在公共照片目录中,并将Uri
保存到该文件。
我希望将该图像保存为Base64
字符串
,并将其放入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);
}
你能告诉我在编码时是否有做错什么吗?
希望我的问题已经表述清楚。
祝好!
String stest = base64EncodeDecode.encodeToBase64(test); taskItems.put("image",base64EncodeDecode.encodeToBase64(BitmapFactory.decodeStream(in,null,options)));
第一次编码是针对你已经进行采样的位图。在采样之后,你想要对真实的位图进行编码吗? - Mustansar Saeed