我正在尝试使用默认相机和Intent进行图像和视频捕捉。 当我转向前置摄像头并捕获图像或视频预览(捕获的图像或视频)时,它被反转。所以现在我想把 preScale 放在 frontCamera 中。但是不知道在哪里可以找到默认相机中的摄像机ID 。!!
注意:这不是自定义相机。!!
问题是:从前置摄像头拍摄的图像获取图像是镜像。如果有任何问题,请查看它?我没得到! THX
甚至在SDCard中存储的捕获图像也是镜像!现在如何preScale或任何其他想法来纠正iT ??
帮助!
photo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
captureImage();
}
});
CatureImage方法
private void captureImage() {
Context context = this;
PackageManager packageManager = context.getPackageManager();
if (packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA) == false
&& packageManager
.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY) == false) {
Toast.makeText(CameraRolling2.this, "camera not available'",
Toast.LENGTH_SHORT).show();
return;
}
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent
.resolveActivity(CameraRolling2.this.getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
Toast.makeText(CameraRolling2.this, "Error connecting camera",
Toast.LENGTH_SHORT).show();
ex.printStackTrace();
}
// Continue only if the File was successfully created
if (photoFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent,
CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
showImg.setImageBitmap(null);
}
}
}
@SuppressLint("SimpleDateFormat")
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
.format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(imageFileName, ".jpg", storageDir);
mCurrentPhotoPath = image.getAbsolutePath();
Log.v("createImageFile", "" + mCurrentPhotoPath);
return image;
}
和我的活动结果
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE
&& resultCode == Activity.RESULT_OK) {
File imgFile = new File(mCurrentPhotoPath);
if (imgFile.exists()) {
BitmapFactory.Options bitmap_options = new BitmapFactory.Options();
bitmap_options.inSampleSize = 4;
bitmap_options.outHeight = 200;
bitmap_options.outWidth = 200;
Bitmap myBitmap = BitmapFactory.decodeFile(
imgFile.getAbsolutePath(), bitmap_options);
showImg.setImageBitmap(myBitmap);
if (showImg.getDrawable() == null) {
Log.e("IMAGEVIEW", "NULL IMAGE");
imageflag = false;
} else {
Log.e("IMAGEVIEW", "IMAGE VIEW UPDATED");
imageflag = true;
}
}
}
if (resultCode == Activity.RESULT_CANCELED) {
Toast.makeText(CameraRolling2.this, "Camera option canceled",
Toast.LENGTH_SHORT).show();
imageflag = false;
}
答案 0 :(得分:0)
我正在尝试使用默认相机和Intent进行图像和视频捕捉
Android中没有单一的“默认摄像头与Intent”。有数以千计的Android设备型号。这些与数百种不同的“默认相机与Intent”应用程序。用户可以从Play商店或其他地方安装其他“默认相机与Intent”应用程序。这些应用中的任何一个都可以是用户选择用于拍摄照片(SELECT IdNum, COALESCE(street, `free address`) AS street, `free address`
FROM ID
)或录制视频(ACTION_IMAGE_CAPTURE
)的内容。
当我转向前置摄像头拍摄图像或视频预览(拍摄的图像或视频)时,
我猜想“倒”,你的意思是“旋转”。
有数百种不同的相机应用程序。许多人会使用元数据保存图像或视频,告诉观看者应用程序旋转图像(例如,JPEG照片可能具有方向EXIF标题)。有些人不会,选择自己轮换内容。
此外,任何相机(正面,背面,外部)的图像或视频都可以旋转。
因此,您不应该假设旋转与用户使用的特定相机相关联。相反,检查实际内容并做出相应反应。 unary operator使用几种不同的技术演示了如何旋转JPEG图像。
所以现在我想把preScale放在frontCamera中。
你无法控制它。
但是不知道在默认相机中哪里可以找到相机ID。!!
你无法控制它。