使用渲染脚本Android旋转位图

拍拍

当我使用以下代码时,它最终会出现内存不足异常。经过重新设计后,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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章