Tôi đang triển khai máy ảnh trong ứng dụng và mỗi khi chụp ảnh, hình ảnh của tôi là 320x240, mặc dù máy ảnh của điện thoại của tôi có khả năng phân giải cao hơn nhiều (Galaxy Nexus). Tôi không thể tìm thấy thông số để thiết lập độ phân giải, vậy làm cách nào để tôi giải quyết hình ảnh tôi đang chụp? Đây là mã có liên quan:Làm cách nào để chụp ảnh có độ phân giải cao bằng Camera.takePicture()?
@Override
public void surfaceCreated(SurfaceHolder holder) {
setSurfaceHolder(holder);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
setSurfaceHolder(null);
}
private void attachCameraToSurface(Camera camera, SurfaceHolder holder) {
try {
camera.setPreviewDisplay(holder);
setInPreview(true);
}
catch (IOException e) {
Log.e("CameraFragment", "Exception in attachCameraToSurface()", e);
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Camera camera = getCamera();
if (camera == null) {
return;
}
Camera.Size size = getCameraPreviewSize(camera);
Camera.Parameters params = camera.getParameters();
params.setPreviewSize(size.width, size.height);
camera.setParameters(params);
attachCameraToSurface(camera, holder);
startPreview();
}
private Camera.Size getCameraPreviewSize(Camera camera) {
Camera.Parameters params = camera.getParameters();
List<Camera.Size> supportedSizes = params.getSupportedPreviewSizes();
Rect frame = getSurfaceHolder().getSurfaceFrame();
int width = frame.width();
int height = frame.height();
for (Camera.Size size : supportedSizes) {
if (size.width >= width || size.height >= height) {
return size;
}
}
return supportedSizes.get(0);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.camera_action_ImageView:
getCamera().takePicture(getShutterCallback(), null, new JpegPictureCallback());
break;
}
}
private class JpegPictureCallback implements PictureCallback {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
}
catch (OutOfMemoryError e) {
Log.e("CameraFragment", "Out of memory decoding image from camera.", e);
return;
}
data = null;
if (bitmap != null) {
new SavePictureWorker(getActivity()).execute(bitmap);
}
startPreview();
}
}
Không biết làm thế nào tôi bị mất rằng một. Cảm ơn. –
Hoạt động tuyệt vời. Cảm ơn! – JustSoAmazing
bạn là thiên tài làm việc tuyệt vời cuối cùng tôi tìm thấy một giải pháp sử dụng sau 3 ngày –