下面是一个使用Firebase存储从drawable上传图片的示例代码:
dependencies {
// Firebase Storage
implementation 'com.google.firebase:firebase-storage:20.0.0'
}
在你的Firebase控制台中启用存储功能。
创建一个用于上传图片的方法。这个方法将从drawable中获取图片,并上传到Firebase存储中。以下是一个例子:
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.util.Log;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class FirebaseUtils {
private static final String TAG = "FirebaseUtils";
private static final String STORAGE_PATH = "images/";
public static void uploadImageToStorage(Context context, String imageName, int drawableId) {
// 获取Firebase存储的引用
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReference();
// 创建一个指向存储位置的引用
StorageReference imagesRef = storageRef.child(STORAGE_PATH + imageName + ".png");
try {
// 从drawable获取图片
InputStream inputStream = context.getResources().openRawResource(drawableId);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
// 将图片转换为字节数组
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] data = baos.toByteArray();
// 上传图片到Firebase存储
UploadTask uploadTask = imagesRef.putBytes(data);
uploadTask.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// 图片上传成功
Uri downloadUrl = taskSnapshot.getUploadSessionUri();
Log.d(TAG, "Image upload successful. Download URL: " + downloadUrl);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// 图片上传失败
Log.e(TAG, "Image upload failed: " + e.getMessage());
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
FirebaseUtils.uploadImageToStorage(this, "my_image", R.drawable.my_image);
这样就可以从drawable上传图片到Firebase存储了。请确保在使用之前添加了适当的权限和Firebase配置。