java - 如何将图像uri发送到firebase?
问题描述
我一直在尝试将 uri 发送到 firebase,但无法获得正确的数据。我可以在成功监听器中使用什么?
private Bitmap getBitmapFromView(View view, int height, int width) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Drawable bgDrawable = view.getBackground();
if (bgDrawable != null)
bgDrawable.draw(canvas);
else
canvas.drawColor(Color.WHITE);
view.draw(canvas);
return bitmap;
}
以及以下:
public void saveBitmap(Bitmap bitmap) {
Calendar calendar = Calendar.getInstance();
final String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 20, baos);
byte[] data = baos.toByteArray();
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReferenceFromUrl("storage details");
StorageReference imagesRef = storageRef.child("details");
UploadTask uploadTask = imagesRef.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
}
});
}
如何从屏幕截图中获取 uri?
解决方案
您可以像下面这样获取存储 url:
uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
return storageRef.getDownloadUrl();
}
}).addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
在 onSuccess 函数中获取 url 后,您可以将其保存为 firebase 数据库。
推荐阅读
- android - React native 和 native 可以同时访问的存储?
- javascript - ReferenceError:页面刷新后未定义google
- c# - 正则表达式匹配由许多零或空格进行的 1 到 4 位数字
- c++ - 是什么导致“OpenCV(4.0.1)错误:断言失败(m.dims <= 2)”
- tinyos - TinyOS中基本代码的含义是什么
- jquery - 如何使 jQuery AutoComplete 功能在 Durandal 中工作?
- odata - ODATA:“或”运算符的问题
- c++ - Web 服务器如何知道 HTTP 请求何时被完全接收?
- haskell - Haskell:从多个可能中生成一个数组
- python-3.x - Why does function containing "scipy.integration" produces some wrong results together with correct?