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

图片的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;

}

}

推荐阅读更多精彩内容