将大位图拆分为 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)
我有一个大位图 - 有时高度为 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)