美文网首页Android开发经验谈Android知识
Andrid bitmap的镜像3D翻转(绕x轴 Y轴)

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

作者: 满嘴胡言 | 来源:发表于2016-06-13 16:15 被阅读463次

    图片的3D翻转借助的是android.graphics.Camera类来实现的。理论上来说应该也可以通过矩阵变换来实现,希望有高手能够指出。下面附上代码:

    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;

    }

    }

    相关文章

      网友评论

        本文标题:Andrid bitmap的镜像3D翻转(绕x轴 Y轴)

        本文链接:https://www.haomeiwen.com/subject/cgpydttx.html