当我使用以下代码时,它最终会出现内存不足异常。经过重新设计后,Render脚本看起来很不错。在哪里可以找到类似操作的示例代码,以及如何将其集成到我的项目中。
public Bitmap rotateBitmap(Bitmap image, int angle) {
if (image != null) {
Matrix matrix = new Matrix();
matrix.postRotate(angle, (image.getWidth()) / 2,
(image.getHeight()) / 2);
return Bitmap.createBitmap(image, 0, 0, image.getWidth(),
image.getHeight(), matrix, true);
}
return null;
}
基本上,旋转位图是在不使用额外内存的情况下旋转2D数组的任务。这是使用RenderScript的正确实现:Android:旋转图像而不将其加载到内存中。
但是,如果您只需要显示旋转的位图,则不需要这样做。您可以简单地扩展ImageView
和旋转在其Canvas
上绘制的图形:
canvas.save();
canvas.rotate(angle, X + (imageW / 2), Y + (imageH / 2));
canvas.drawBitmap(imageBmp, X, Y, null);
canvas.restore();
ScriptIntrinsic呢,因为它只是用于常见操作的内置RenderScript内核,所以您不能在已实现的功能之上做任何事情:ScriptIntrinsic3DLUT, ScriptIntrinsicBLAS, ScriptIntrinsicBlend, ScriptIntrinsicBlur, ScriptIntrinsicColorMatrix, ScriptIntrinsicConvolve3x3, ScriptIntrinsicConvolve5x5, ScriptIntrinsicHistogram, ScriptIntrinsicLUT, ScriptIntrinsicResize, ScriptIntrinsicYuvToRGB
。它们目前不包含旋转位图的功能,因此您应该创建自己的ScriptC脚本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句