我正在使用吹哨工作相机API,并将相机翻转到后面/前面。 Fliping the Front Camera to Back Camera in Button Click using android
默认情况下,在三星设备中,它会以横向方式打开相机预览,但
camera.setDisplayOrientation(90);
通过此代码我能够以纵向打开相机预览。但是当我保存图像时,它会自动将其保存为横向。
使用此approch
Matrix matrix = new Matrix();
matrix.postRotate(90);
Bitmap bitmap = BitmapFactory.decodeFile(pictureFile.getAbsolutePath());
Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
bitmap.getWidth(), bitmap.getHeight(), matrix, true);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(rotatedBitmap,
curntViewWidth, curntViewHeight, true);
处理速度变慢。任何人都可以通过其他方式预览,捕捉和保存图像方向相同..
我们是否有任何图书馆可以打开相机并设置特定尺寸的图片,例如此应用 https://play.google.com/store/apps/details?id=com.tinypiece.android.mlc
答案 0 :(得分:1)
来自Camera.Parameters#setRotation()
的文档:
如果应用程序想要旋转图片以匹配方向 用户看到的内容,应该使用OrientationEventListener和 Camera.CameraInfo
public void onOrientationChanged(int orientation) {
if (orientation == ORIENTATION_UNKNOWN) return;
android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
orientation = (orientation + 45) / 90 * 90;
int rotation = 0;
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
rotation = (info.orientation - orientation + 360) % 360;
} else { // back-facing camera
rotation = (info.orientation + orientation) % 360;
}
mParameters.setRotation(rotation);
}
OrientationEventListener
是一个包含onOrientationChanged()
的抽象类。此方法将从系统接收方向更改。这是一种可能的实现方式:
OrientationEventListener listener = new OrientationEventListener(this,
SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int i) {
//Code from above goes here.
}
};
listener.enable();