您的位置:首页 > 移动开发 > Android开发

Android之bitmap的镜像3D翻转(绕x轴 Y轴)

2015-12-03 18:15 471 查看
主要运用到的是graphics下面的camera类。大家不要误以为是handware下面的哦。

import android.graphics.Camera;

private Camera camera;

camera = new Camera();

 /**

     * 翻转图片

     *

     * @param isLeftOrRight

     */

    private void roatePicture(boolean isLeftOrRight, Bitmap bitmap) {

        camera.save();

        Matrix matrix = new Matrix();

        // rotate

        if (isLeftOrRight) {

            camera.rotateY(180);

        } else {

            camera.rotateX(180);

        }

        camera.getMatrix(matrix);

        // 恢复到之前的初始状态。

        camera.restore();

        // 设置图像处理的中心点

        matrix.preTranslate(bitmap.getWidth() >> 1, bitmap.getHeight() >> 1);

        //    matrix.preSkew(10, 10);

        matrix.postTranslate(bitmap.getWidth(), bitmap.getHeight());

        // matrix.postSkew(skewX, skewY);

        // 直接setSkew(),则前面处理的rotate()、translate()等等都将无效。

        // matrix.setSkew(skewX, skewY);

        // 2.通过矩阵生成新图像(或直接作用于Canvas)

        Bitmap newBit = null;

        try {

            // 经过矩阵转换后的图像宽高有可能不大于0,此时会抛出IllegalArgumentException

            newBit = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);

        } catch (IllegalArgumentException iae) {

            iae.printStackTrace();

        }

        if (newBit != null) {

//            show_image.mImageView.setLayout(false);

            show_image.setImageBitmap(newBit);

            tempBitmap = newBit;

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: