我拍摄的照片是低分辨率,我怎样才能使其完全解析?
问题描述:
我正在尝试为项目构建简单的相机应用程序但我不能使用相机套件等相机相机库。而且我不使用Camera2 API,因为我需要向后兼容。我拍摄的照片是低分辨率,我怎样才能使其完全解析?
我有自定义CameraPreview(扩展SurfaceView实现SurfaceHolder.Callback)类应用程序显示实时预览。但是,当我将图像保存在“我的主要活动”中时,它会以320x240解析度保存。
我不明白为什么它保存在240p和我如何能以全分辨率保存这些数据?
这是它保存图片的活动;
public class FullscreenActivity extends Activity implements Camera.PictureCallback {
public final static String DEBUG_TAG = "MakePhotoActivity";
public Camera camera;
private int cameraId = 0;
private Uri filerui;
boolean visibility =false;
private static final String IMAGE_DIRECTORY_NAME = "hellocamera";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fullscreen);
//Check Permission
FullscreenActivityPermissionsDispatcher.NeedCameraPermissinWithPermissionCheck(this);
// do we have a camera?
cameraId = findCamera();
if (getBoolean()) {
visibility=true;
camera=Camera.open(cameraId);
initCameraPreview();
}
}
//iniitaiate preview
public void initCameraPreview(){
CameraPreview cameraPreview= (CameraPreview) findViewById(R.id.camerePreview);
if (visibility) {
cameraPreview.setVisibility(View.VISIBLE);
visibility=false;
}
cameraPreview.init(camera);
}
//This is the button ı capture photos
public void onClick(View view) {
camera.takePicture(null, null, this);
}
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "DCIM");
imagesFolder.getAbsolutePath();
String fileName = Helper.save();
File output = new File(imagesFolder, fileName);
Uri uriSavedImage = Uri.fromFile(output);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
imageFileOS.write(data);
imageFileOS.flush();
imageFileOS.close();
} catch (FileNotFoundException e) {
// Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// Auto-generated catch block
e.printStackTrace();
}
}
答
好的,我自己解决了这个问题,结果我没有能够正确地实现parameters.getSupportedPictureSizes()。如果其他人遇到类似的问题,这也可能是你问题的根源。