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

来源:互联网 发布:室内设计 知乎 编辑:程序博客网 时间:2024/04/29 19:17

主要运用到的是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;
        }
    }
0 0