在我的应用中,用户可以在帖子中添加图片。我希望图片以String格式发送到Firebase,以便所有查看帖子的用户都可以访问它。我已经拥有它所以打开相机并保存图片并给出一个唯一的名称。我的问题在于将图像转换为base64字符串。
这就是我设置拍摄照片并保存的方法。字符串日期用于唯一文件名。
Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
imagesFolder.mkdirs(); // <----
File image = new File(imagesFolder, date + ".jpg");
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivityForResult(imageIntent,0);
答案 0 :(得分:0)
如果您的问题在于转换图片(当Bitmap
返回某些内容时实际上是onActivityResult()
图片),那么就有一种简单的方法可以做到这一点。首先,您必须将Bitmap
转换为字节数组。你可以这样做:
// Retrieve your Bitmap here
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); // 'bitmap' is the image returned
byte[] b = stream.toByteArray();
然后转换字节数组,只需使用提供的Android类:
String b64Image = Base64.encodeToString(b, Base64.DEFAULT);
然后,您可以使用您的方法将特定的String
上传到Firebase,但这是一个示例:
mDatabase.child("users").child("image").setValue(b64Image);
这应该将编码后的Base64 String
正确保存到Firebase。希望它有所帮助!