Android - 如何从一个大位图创建小位图?

时间:2013-12-22 00:00:45

标签: java android bitmap

我有大位图(720x6000),我需要从中制作6个小位图(每个720x1000)。我怎么能这样做?请在答案中添加一些代码。

请原谅我的英语。

1 个答案:

答案 0 :(得分:1)

使用静态方法Bitmap.createBitmap (Bitmap source, int x, int y, int width, int height)的最简单的解决方案是从'source'位图的指定子集创建一个新的不可变位图(不可修改的不可变位图。试图修改一个将引发异常)。如果较小的位图必须是可变的,则可以通过调用Bitmap.createBitmap()Bitmap.copy(Bitmap.Config config, boolean isMutable)返回的不可变位图转换为可变位图。

Bitmap bigBitmap = ...;
Bitmap smallBitmap1 = Bitmap.createBitmap(bigBitmap, 0, 0, 720, 1000);
Bitmap smallBitmap2 = Bitmap.createBitmap(bigBitmap, 0, 1000, 720, 1000);
Bitmap smallBitmap3 = Bitmap.createBitmap(bigBitmap, 0, 2000, 720, 1000);
...
// to make small bitmaps mutable
smallBitmap1 = smallBitmap1.copy(Bitmap.Config.ARGB_8888, true);
smallBitmap2 = smallBitmap2.copy(Bitmap.Config.ARGB_8888, true);
...

另一个解决方案是创建空的小位图,并使用Canvas在较小的位图上绘制大位图的一部分。