【问题标题】:Image automatically gets cropped while retrieving from Firebase Storage从 Firebase 存储中检索图像时会自动裁剪图像
【发布时间】:2017-09-09 03:41:00
【问题描述】:

我正在 Firebase 存储上上传图片,当我在 Firebase 的存储中看到它们时,这些图片看起来很好,但是当我在我的 Activity 上检索这些图片时,图片会从顶部和底部被裁剪,高度为的图片会发生这种情况更长。我正在像这样在 Firebase 上发送图像

if(mImageUri!=null) //
    {
        StorageReference filepath=mstorage.child("Images").child(mImageUri.getLastPathSegment());
        filepath.putFile(mImageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                final Uri downloadUrl= taskSnapshot.getDownloadUrl();
                final DatabaseReference newPost=mDatabase.push();

                mDatabaseUser.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        newPost.child("Image").setValue(downloadUrl.toString());

                        newPost.child("Name").setValue(dataSnapshot.child("name").getValue()).addOnCompleteListener(
                                new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                if(task.isSuccessful())
                                {
                                    startActivity(new Intent(PostActivity.this,MainActivity.class));
                                    finish();
                                }
                                else
                                {
                                    Toast.makeText(PostActivity.this,"An Error Has Occurred.",Toast.LENGTH_LONG).show();
                                }
                            }
                        });
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                        Toast.makeText(PostActivity.this,"Error Uploading data",Toast.LENGTH_LONG).show();
                    }
                });

                mProgress.dismiss();
                //startActivity(new Intent(PostActivity.this,setupActivity.class));
            }
        });
    }

这是 PostActicity Xml 文件:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:foregroundGravity="center">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/back"
        android:orientation="vertical">

        <ImageButton
            android:id="@+id/MimageSelect"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center"
            android:adjustViewBounds="true"
            android:background="#00ffffff"
            android:scaleType="centerCrop"
            android:src="@mipmap/add_btn" />


    </LinearLayout>
</ScrollView>

<EditText
    android:id="@+id/Mphone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/submit"
    android:layout_centerHorizontal="true"
    android:layout_marginLeft="6dp"
    android:layout_marginRight="6dp"
    android:layout_marginBottom="5dp"
    android:background="@drawable/input_outline"
    android:ems="10"
    android:hint="Caption"
    android:padding="15dp"
    android:singleLine="false" />
<Button
    style="?android:attr/buttonStyleSmall"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="UPLOAD"
    android:id="@+id/submit"
    android:background="@color/colorPrimary"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:textColor="@android:color/white"
    android:textStyle="bold"
    android:textSize="16dp" />

这就是我检索图像的方式:

mDatabase.child(mPostKey).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            String post_image=(String) dataSnapshot.child("Image").getValue();
            String post_uid=(String) dataSnapshot.child("uid").getValue();

            Picasso.with(profileSingleActivity.this).load(post_image).into(mImage);


        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

这是我在其中检索图像的活动的 XML 文件:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/scroll"
    android:foregroundGravity="center">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/back"
    android:orientation="vertical">
        <ImageButton
            android:id="@+id/MimageSelect"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_margin="12dp"
            android:adjustViewBounds="true"
            android:background="#00ffffff"
            android:scaleType="centerCrop"
            android:src="@mipmap/add_btn" />
</LinearLayout>
</ScrollView>

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Delete Post"
    android:id="@+id/removeBtn"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:background="@color/design_textinput_error_color_light"
    android:textColor="@color/abc_primary_text_disable_only_material_dark"
    android:textStyle="bold" />

【问题讨论】:

  • 你能发布mImage ImageView 的配置吗? XML 或 java 都可以
  • 查看编辑版本@bash
  • 这不是 Android Studio 问题,所以不要使用 Android Studio 标签
  • 是的,它是@LunarWatcher
  • @SyyamNoor 它在 in android studio 中不会成为 about android studio 的问题。不要挑这个打,我有一个标签说明支持它

标签: android firebase firebase-storage


【解决方案1】:

根据您的需要,您必须正确使用android:scaleType 属性。你可以使用fitcenter 代替centerCrop

 <ImageButton
        android:id="@+id/MimageSelect"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_margin="12dp"
        android:adjustViewBounds="true"
        android:background="#00ffffff"
        android:scaleType="centerCrop"
        android:src="@mipmap/add_btn" />    

检查此 URL,他们用图像演示。 https://robots.thoughtbot.com/android-imageview-scaletype-a-visual-guide

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 2017-08-30
    • 2017-02-23
    • 1970-01-01
    • 2019-12-17
    • 2011-03-18
    相关资源
    最近更新 更多