将大位图拆分为 android 中的位图列表

Split big bitmap to list of bitmaps in android

我有一个大位图 - 有时高度为 2000 有时为 4000 等。这可以将这个大位图除以 1500 并保存到数组中吗?

例如,如果我有一个高度为 2300 的位图,我想要一个包含两个位图的数组:一个 1500 高度,第二个 800。

是的,您可以使用 Bitmap.createBitmap(bmp, offsetX, offsetY, width, height); 创建位图的“切片”,从特定的 x 和 y 偏移量开始,并具有特定的宽度和高度。

我会把数学留给你。

您可以使用 createBitmap() 从原始 Bitmap 创建位图块。

下面的函数接受位图和所需的块大小(在您的情况下为 1500)。 如果宽度大于高度,则垂直分割位图,否则水平分割。

fun getBitmaps(bitmap: Bitmap, maxSize: Int): List<Bitmap> {

    val width = bitmap.width
    val height = bitmap.height

    val nChunks = ceil(max(width, height) / maxSize.toDouble())

    val bitmaps: MutableList<Bitmap> = ArrayList()

    var start = 0
    for (i in 1..nChunks.toInt()) {

        bitmaps.add(
            if (width >= height)
                Bitmap.createBitmap(bitmap, start, 0, width / maxSize, height)
            else
                Bitmap.createBitmap(bitmap, 0, start, width, height / maxSize)
        )
        start += maxSize
    }

    return bitmaps

}

用法:

getBitmaps(myBitmap, 1500)