图片以错误的方向上传到Firebase存储空间

时间:2018-03-17 23:39:03

标签: android firebase orientation firebase-storage picasso

当我将图像上传到Firebase存储时它以错误的方向保存。我上传了一张以纵向拍摄的图像,但是它以横向显示并始终显示在左侧。

当用户从手机上的图库上传图像时,我希望它保留图像的方向。我已经看过使用ExifInterface,但是没有用,我也试过使用毕加索。

在我使用毕加索时显示图像。

Picasso.get().load(profileImage).resize(350, 350).transform(new CircleTransformation()).into(profileImageUri);

我的问题是,如何保持图像的图像方向并将其显示给用户?

到目前为止,这是我的代码:

  // uupload users profile image
    uploadProfileImage.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // intent to gallery area
            Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType("image/*");
            startActivityForResult(intent, GALLERY_INTENT);
        }
    });

    return view;
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    final FirebaseUser user = auth.getCurrentUser();

    if (requestCode == GALLERY_INTENT && resultCode == RESULT_OK)
    {

        progressDialog.setMessage("Uploading Image Please Wait...");
        progressDialog.show();

        final Uri uri = data.getData();

        final StorageReference filePath = storageReference.child("Images").child(user.getUid()).child(uri.getLastPathSegment());
        this.filePath = filePath;

        // Put the file in the Firebase Storage Area
        filePath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>()
        {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot)
            {
                progressDialog.dismiss();
                Toast.makeText(getActivity(), "Uploaded Successfully!", Toast.LENGTH_SHORT).show();
                Uri downloadUri = taskSnapshot.getDownloadUrl();

                // Saving the URL under the "Users" table, under the "Users ID" In the Firebase Database to later retrieve it
                myRef.child("Users").child(user.getUid()).child("profileImage").setValue(downloadUri.toString());
            }
        }).addOnFailureListener(new OnFailureListener()
        {
            @Override
            public void onFailure(@NonNull Exception e)
            {
                progressDialog.dismiss();
                Toast.makeText(getActivity(), "Failed To Upload!", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

图像在Firebase存储区中的存储方式

Image And Details In Database

图像在导航抽屉中的显示方式

此图像是在纵向方向拍摄的。不是风景。

How the image is being rendered to the Navigation Drawer

**编辑**

这个图像不同,因为其他问题表示使用毕加索并使用旋转功能,但这不适用于我的问题,因为我有一个图像的可变上传。另外,我的解决方案,我将上传的答案适用于片段和其他解决方案仅适用于活动。我的代码运行良好,可以正确的方向上传到firebase。

0 个答案:

没有答案