调整图像大小以适合图像视图

Posted

技术标签:

【中文标题】调整图像大小以适合图像视图【英文标题】:Resizing an image to fit on a imageview 【发布时间】:2015-03-25 17:14:28 【问题描述】:

我正在开发一个应用程序,我需要在其中将位图适合具有特定尺寸的 Imageview(假设 350dpx50dp - 高度*宽度)。

我想做类似这样的事情:http://gyazo.com/d739d03684e46411feb58d66acea1002

我在这里寻找解决方案。我找到了这个用于缩放位图并将其放入 imageview 的代码,但问题是当我将位图添加到他时 imageview 变得更大:

private void scaleImage(Bitmap bitmap, ImageView view)

    // Get current dimensions AND the desired bounding box
    int width = bitmap.getWidth();
    int height = bitmap.getHeight();
    int bounding = dpToPx(350);

    // Determine how much to scale: the dimension requiring less scaling is
    // closer to the its side. This way the image always stays inside your
    // bounding box AND either x/y axis touches it.
    float xScale = ((float) bounding) / width;
    float yScale = ((float) bounding) / height;
    float scale = (xScale <= yScale) ? xScale : yScale;

    // Create a matrix for the scaling and add the scaling data
    Matrix matrix = new Matrix();
    matrix.postScale(scale, scale);

    // Create a new bitmap and convert it to a format understood by the ImageView
    Bitmap scaledBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);

    // Apply the scaled bitmap
    view.setImageBitmap(scaledBitmap);

使用这个代码我可以得到这个:http://gyazo.com/e9871db2130ac33668156fc0cf773594

但这不是我想要的,我想保留 imageview 的尺寸并将位图添加到 imageview 而不修改 imageview 的尺寸并占据所有 imageview 的表面。就像第一张图片一样。

【问题讨论】:

【参考方案1】:

为什么不直接在 xml 中将 android:scaleType="fitXY" 添加到 ImageView 中?

【讨论】:

我试过了。我得到相同的结果:gyazo.com/e9871db2130ac33668156fc0cf773594 那么肯定需要更多信息来帮助 您需要什么样的信息?由于我的声誉,我无法发布图片也没有更多链接 xD 我将向您展示 ImageView 的 xml:gyazo.com/c34327780b9115c2c3eafe378cb8c4d1 我有 6 个图像视图:gyazo.com/8a53975b4bf9746bb28eb090e5cd61a3 它们都有相同的 xml。当我执行这样的简单代码时(一个 ImageView 的示例):gyazo.com/320947b4e2d81ddf72541a8e1f105740 我得到这个:gyazo.com/b40272839f8a095c61289fdfbbdff1a4 当然问题不在于缩放图像。我认为您不必手动执行此操作,scaleType 会执行相同的操作。很可能问题出在布局中,您将 ImageView 设置为包装和加权。

以上是关于调整图像大小以适合图像视图的主要内容,如果未能解决你的问题,请参考以下文章

从相机调整图像大小以适合 Imageview

水平图像滚动,图像大小调整以适合高度显示空白空间

自动调整 UIImageView 的大小以适合底层图像

调整UIImageView的大小以包装“适合方面”的图像

无法让 UIImageView 调整大小以适应屏幕

如何水平调整图像大小(通过 CSS)以适合框?