我在CommonsWare的cwac-camera library遇到了一个奇怪的问题。 尽管设置了:
,前置摄像头拍摄的图像仍然是镜像的(即我在预览中看到的镜像) builder.mirrorFFC(true);
我已确认通过登录ImageCleanupTask正确应用此设置,如下所示:
if (applyMatrix) {
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
if (xact.host.getDeviceProfile().portraitFFCFlipped()
&& (xact.displayOrientation == 90 || xact.displayOrientation == 270)) {
matrix=flip(new Matrix());
}
else if (xact.mirrorFFC()) {
Log.d("myapp", "matrixFFC is true");
matrix=mirror(new Matrix());
}
}
最奇怪的是,无论我是否设置了mirrorFFC(true),照片都始终镜像。我没有对Cwac库进行任何其他更改。
解决问题的快速而肮脏的黑客是修改ImageCleanupTask,如下所示:
if (matrix != null) {
Bitmap original=
BitmapFactory.decodeByteArray(data, 0, data.length);
cleaned=
Bitmap.createBitmap(original, 0, 0, original.getWidth(),
original.getHeight(), matrix, true);
original.recycle();
//below my added code:
Matrix myMatrix = new Matrix();
myMatrix.preScale(-1.0f, 1.0f);
cleaned = Bitmap.createBitmap(cleaned, 0, 0, cleaned.getWidth(), cleaned.getHeight(), myMatrix, false);
}
现在的问题是 - 它只是我的设备(三星SGS i9000,运行ICS)导致问题或其他什么?