如何在Android预览屏幕上解决镜像效果
早些时候,当我用前置摄像头拍摄照片时,将图片设置为ImageView时,旋转被翻转,图像使用镜像效果,我的代码出现了问题 经过一些研究,这个问题已经解决了,但是我仍然有在预览屏幕上翻转图像的问题 启动活动以获取结果。。(用户看到摄像机) 用户拍照(显示预览屏幕,这里是我看到镜像效果的地方) 用户单击“确定”。。已设置ImageView。。这里的图像设置完美,没有镜像效果的问题 下面是我的代码如何在Android预览屏幕上解决镜像效果,android,android-camera,Android,Android Camera,早些时候,当我用前置摄像头拍摄照片时,将图片设置为ImageView时,旋转被翻转,图像使用镜像效果,我的代码出现了问题 经过一些研究,这个问题已经解决了,但是我仍然有在预览屏幕上翻转图像的问题 启动活动以获取结果。。(用户看到摄像机) 用户拍照(显示预览屏幕,这里是我看到镜像效果的地方) 用户单击“确定”。。已设置ImageView。。这里的图像设置完美,没有镜像效果的问题 下面是我的代码 private void takePhoto(){ Intent intent
private void takePhoto(){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
uri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, 100);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100) {
if (resultCode == RESULT_OK) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap bitmap = BitmapFactory.decodeFile(uri.getPath(),
options);
Matrix matrix = new Matrix();
float[] mirrorY = { -1, 0, 0, 0, 1, 0, 0, 0, 1};
Matrix matrixMirrorY = new Matrix();
matrixMirrorY.setValues(mirrorY);
matrix.postConcat(matrixMirrorY);
ExifInterface exifInterface = null;
try {
exifInterface = new ExifInterface(uri.getPath());
} catch (IOException e) {
e.printStackTrace();
}
assert exifInterface != null;
int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
matrix.setRotate(90);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
matrix.setRotate(180);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
matrix.setRotate(270);
break;
}
rotatedBitmap = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
visitorImage.setImageBitmap(rotatedBitmap);
visitorPreviewImage.setImageBitmap(rotatedBitmap);
} else if (resultCode == RESULT_CANCELED) {
// user cancelled Image capture
Toast.makeText(getApplicationContext(),
"User cancelled image capture", Toast.LENGTH_SHORT)
.show();
} else {
// failed to capture image
Toast.makeText(getApplicationContext(),
"Sorry! Failed to capture image", Toast.LENGTH_SHORT)
.show();
}
}
}
我的问题是,我目前不确定在哪里可以解决预览屏幕的镜像效果问题
谢谢大家
我的问题是,我目前不确定在哪里可以解决预览屏幕的镜像效果问题
预览屏幕在另一个Android应用程序中,而不是你的。没有什么需要你去“修复”。相机应用程序将显示其预览,但相机应用程序需要
我的问题是,我目前不确定在哪里可以解决预览屏幕的镜像效果问题
预览屏幕在另一个Android应用程序中,而不是你的。没有什么需要你去“修复”。相机应用程序将按相机应用程序所需的方式显示其预览。好,那么是否可以停止在我的应用程序中显示预览?就目前而言,这有点误导了我想要实现的目标?@chirag90:“那么有可能停止在我的应用程序中显示预览吗?”——没有,因为它不是你的应用程序。这是相机应用程序。用户的摄像头应用程序(无论是预安装的还是用户从Play Store或其他地方安装的)将执行用户的摄像头应用程序想要执行的任何操作。如果你需要这样的控制水平,编写你自己的相机应用程序,或者添加一个库,将相机功能添加到你自己的应用程序中(并给你更多的控制)。非常感谢你的回答。我会看看图书馆/创建我自己的应用程序。如果你把它和提供的答案放在一起,我会接受它作为答案。好的,那么有可能停止在我的应用程序中显示预览吗?就目前而言,这有点误导了我想要实现的目标?@chirag90:“那么有可能停止在我的应用程序中显示预览吗?”——没有,因为它不是你的应用程序。这是相机应用程序。用户的摄像头应用程序(无论是预安装的还是用户从Play Store或其他地方安装的)将执行用户的摄像头应用程序想要执行的任何操作。如果你需要这样的控制水平,编写你自己的相机应用程序,或者添加一个库,将相机功能添加到你自己的应用程序中(并给你更多的控制)。非常感谢你的回答。我会看看图书馆/创建我自己的应用程序。如果你把它和答案放在一起,我会接受它作为答案。