在捕获照片之前,如何获取将通过Android相机拍摄的照片的默认尺寸(以像素为单位)?

问题描述:

如果它是由Android设备屏幕的分辨率决定的,有没有办法以编程方式获得该分辨率的值?在捕获照片之前,如何获取将通过Android相机拍摄的照片的默认尺寸(以像素为单位)?

如果通过Android设备的屏幕的分辨率决定

我怎样才能得到照片的默认大小(像素),它将通过Android相机拍摄

没有“def一张照片的大小......“。

如果您自己使用的是android.hardware.Cameraandroid.hardware.camera2 API,则需要从可用分辨率中指定所需的分辨率。

如果您使用的是ACTION_IMAGE_CAPTURE,分辨率将部分基于您是否通过EXTRA_OUTPUT,否则取决于相机应用程序。有数以千计的Android设备型号,包含数百种不同的预装相机应用,还有许多其他相机应用可以通过Play商店等分销渠道获得。他们将使用android.hardware.Cameraandroid.hardware.camera2 API,并且他们将通过他们想要的任何算法来选择他们想要使用的分辨率。

你可以像这样

String pickedImagePath = "path/of/the/selected/file"; 
BitmapFactory.Options bitMapOption=new BitmapFactory.Options(); 
bitMapOption.inJustDecodeBounds=true; 
BitmapFactory.decodeFile(pickedImagePath, bitMapOption); 
int imageWidth=bitMapOption.outWidth;    
int imageHeight=bitMapOption.outHeight; 

更新:

您可以使用显示器的指标与

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 

int width = metrics.widthPixels; 
int height = metrics.heightPixels; 

注意让你的屏幕:屏幕和分辨率的分辨率的相机可能不一样。请参考answer here

+0

谢谢,但我很抱歉可能是我的问题不够清楚。我刚刚编辑了问题陈述。我的意思是要求在拍摄图像之前我需要分辨率。事实上,我所追求的是现场摄像头馈送的像素数量(即屏幕的宽度和高度,以像素为单位显示实时摄像头的像素)? – Solace

+1

你想获得以像素为单位的屏幕宽度和高度,对不对? – SaravInfern

+0

是的,如果全屏实时摄像头中的摄像机帧的宽度和高度与屏幕宽度和高度相同? – Solace

使用以下代码片段获取屏幕大小。 this表示当前的Activity上下文。

WindowManager windowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); 
Display display = windowManager.getDefaultDisplay(); 
DisplayMetrics displayMetrics = new DisplayMetrics(); 
display.getMetrics(displayMetrics); 
int screenWidth = displayMetrics.widthPixels; 
int screenHeight = displayMetrics.heightPixels;