如何将大图像的部分裁剪到 ImageView

Posted

技术标签:

【中文标题】如何将大图像的部分裁剪到 ImageView【英文标题】:How do I crop portions of large image to an ImageView 【发布时间】:2016-06-19 15:55:48 【问题描述】:

假设我有一张看起来像左边的图片... 每个标志是 30x20px。

如何显示区域 0,60 到 30,80?我也希望以后能够如此高档。

【问题讨论】:

【参考方案1】:

您可以使用此方法从您的偏移量创建另一个位图

/**
 * Returns an immutable bitmap from the specified subset of the source
 * bitmap. The new bitmap may be the same object as source, or a copy may
 * have been made. It is initialized with the same density as the original
 * bitmap.
 *
 * @param source   The bitmap we are subsetting
 * @param x        The x coordinate of the first pixel in source
 * @param y        The y coordinate of the first pixel in source
 * @param width    The number of pixels in each row
 * @param height   The number of rows
 * @return A copy of a subset of the source bitmap or the source bitmap itself.
 * @throws IllegalArgumentException if the x, y, width, height values are
 *         outside of the dimensions of the source bitmap, or width is <= 0,
 *         or height is <= 0
 */
public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height) 
    return createBitmap(source, x, y, width, height, null, false);

另一个选项是创建一个自定义 ImageView,然后覆盖 onDraw() 方法以从您的偏移量在 Canvas 上绘制位图

使用Canvas类的这个方法

public void drawBitmap(@NonNull Bitmap bitmap, float left, float top, @Nullable Paint paint)  

【讨论】:

以上是关于如何将大图像的部分裁剪到 ImageView的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python中的平移矩阵将小图像的特定坐标放置到大图像的特定坐标

C# 裁剪和调整大图像大小

如何裁剪部分gif图像?

将相机拍摄的大图像裁剪为 640x640 像素

使用 Imagemagick 将大图像裁剪为特定的纵横比,然后调整它们的大小

如何通过调整大小使用 Jcrop 裁剪大图像?