Android-如何将图片从Google地图上传到Firebase?
问题描述:
我想让用户在他们的位置放置一个标记,然后拍照。 然后将图片上传到他们的坐标和firebase Uid下。 这里是我当前的代码:Android-如何将图片从Google地图上传到Firebase?
final LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
ivcam.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_REQUEST);
String userUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
StorageReference storageRef= FirebaseStorage.getInstance().getReference();
StorageReference mountainsRef = storageRef.child("uploads/")
.child(String.valueOf(latLng))
.child(userUid)
.child(String.valueOf(System.currentTimeMillis()));
final MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title(String.valueOf(latLng));
markerOptions.draggable(false);
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker3));
mCurrLocationMarker = mMap.addMarker(markerOptions);
}
});
有没有任何错误,但是当我拍照,没事就火力地堡储存显示出来。谢谢您的帮助。
答
有在火力
1)存储图像的两种方法是将图像转换为字符串,然后保存该字符串到您的节点。像这样
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
String imageEncoded = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
DatabaseReference ref = FirebaseDatabase.getInstance()
.getReference(Constants.FIREBASE_CHILD_RESTAURANTS)
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.child(mRestaurant.getPushId())
.child("imageUrl");
ref.setValue(imageEncoded);
2)将图片直接上传到firebase存储。
private void uploadFile(Bitmap bitmap) {
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReferenceFromUrl("Your url for storage");
StorageReference mountainImagesRef = storageRef.child("images/" + chat_id + Utils.getCurrentTimeStamp() + ".jpg");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 20, baos);
byte[] data = baos.toByteArray();
UploadTask uploadTask = mountainImagesRef.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
Uri downloadUrl = taskSnapshot.getDownloadUrl();
sendMsg("" + downloadUrl, 2);
Log.d("downloadUrl-->", "" + downloadUrl);
}
});
}
对于这一点,你必须添加依赖关系
compile 'com.google.firebase:firebase-storage:9.0.2'
显示你在哪里上传图像 –
代码是否那里没有上传图片的代码?对不起,新的android – Mozy
检查我的答案,下面希望它有助于:) –