我正在制作一个Android应用程序,我需要在cavas中加载一个图像(位图),并使用“收缩缩放”手势来调整它的大小。但是,当图像超过一定大小时,应用程序会崩溃(OutOfMemory异常)。如何优化图像的加载和操作?
要加载我使用的图像:
BitmapFactory.decodeResource (ctx.getResources (), R.drawable.image)
要绘制它,请执行以下操作:
imgCanvas.drawBitmap (image, posX, posY, null),
要更改其大小,请执行以下操作:
Bitmap.createScaledBitmap (originalBitmap, neww, NEWH, true);
发布于 2013-03-10 15:48:57
这不是微不足道的。
根据图像的当前比例和图像的当前可见部分,仅以适当的分辨率加载该图像的一部分:
https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html
当缩小并希望显示缩小的整个图像时,请使用此BitmapRegionDecoder
类中的方法,该类接受BitmapFactory.Options
参数并将其inSampleSize
设置为大于1的值(最好是2的幂):
https://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize
放大时,首先放大已显示的较低分辨率(其中使用的值inSampleSize > 1),然后使用BitmapRegionDecoder
延迟加载较高分辨率版本(其中inSampleSize
小于之前使用的值),然后逐渐淡入较高分辨率版本。
当用户放大时,继续这样做,直到您的inSampleSize
为1。
https://stackoverflow.com/questions/15323545
复制