Picasso在调整图像大小时不保持宽高比。

15
我希望使用Picasso保留imageView的宽高比并将其调整大小以填充/适应尽可能大的空间,而不会扭曲/改变其宽高比。
到目前为止,我找到了这个链接:在Picasso中缩放图像大小
其中建议使用:
.fit().centerInside() 

然而当我尝试它时:
        Picasso.with(this).load(boxart)
.fit().centerInside() 
        .into(imageItem);

随着我的XML一起:

    <RelativeLayout
        android:id="@+id/rl_ListView1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_centerInParent="true"
        android:layout_gravity="left"
        android:layout_weight="0.3" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:scaleType="fitXY"
            android:layout_gravity="left" />
    </RelativeLayout>

然而,图像仍然显示为扭曲的(它看起来太长而瘦了 - 它的原始纵横比是扭曲的),我不确定为什么。

enter image description here


fit()Javadoc表示它将“调整图像大小以完全适应目标ImageView”,即忽略纵横比。 - Christopher Orr
是的,但 centerInside() 应该能够解决这个问题,即调整图像的大小,使其适应 ImageView 内部并保持纵横比。我怀疑 android:scaleType:fitXY 是问题所在。 - david.mihola
那真的很有帮助...图像不再失真,并且保持了其纵横比 - 但它没有正确地调整大小/填充(周围有空白空间)http://i.stack.imgur.com/ZpCZ3.jpg http://pastebin.com/UXbuU3vv - Jackie Deezner
你是指图片上下的空间吗?考虑到图像的宽高比与ImageView不匹配,这似乎是无法避免的。或者你想调整ImageView的大小,使其适应图像的宽高比 - 在你的情况下,这将使其总体上略微更宽。在这种情况下,请参阅此博客文章:https://medium.com/@jpardogo/scale-a-bitmap-to-fit-height-or-width-ebc0ad1fb11a -- 我最初在那里发表了一些澄清问题的评论,但似乎当他转移到medium.com时,所有评论都丢失了...如果需要更多帮助,请再次提问! - david.mihola
2个回答

15

以下代码应该可以正常工作:

.fit().centerCrop() 

5
针对宽高比适应可以使用 .fit().centerInside()。 - Makalele

4

CenterInside(居中裁剪) CenterInside()是一种裁剪技术,它会缩放图像,使得两个维度都小于或等于ImageView请求的边界大小。图像将被完整地显示,但可能不会填满整个ImageView。

Picasso
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.resize(600, 200)
.centerInside() 
.into(imageViewResizeCenterInside);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接