比较很简单:我用自定义相机拍照,使用CameraManager。然后我用默认的Galaxy Note 5相机拍摄相同的照片。 CameraManager可用的最大尺寸是3264 by 1836
,因此我使用它并将三星相机设置为相同的分辨率。结果
然后我尝试用
设置CameraManager照片 captureBuilder.set(CaptureRequest.JPEG_QUALITY, (byte) 100);
仍然没有变化。只有一个变化:使用CameraManager拍摄的照片的文件大小变为2.3MB(以前为0.5MB),而三星照片的尺寸(剩余)为1.6MB。因此,即使尺寸较大,使用CameraManager拍摄的照片质量仍然较低。我可以解决这个问题的任何想法:如何使用CameraManager拍摄的照片与使用Note 5附带的默认相机应用程序拍摄的照片质量相同?
答案 0 :(得分:1)
当我们使用Camer管理器这个方法时,这些是一些方法 可以帮到你。
Android Camera应用程序对Intent中的照片进行编码 传递给onActivityResult()作为附加内容中的一个小位图 关键"数据"。以下代码检索此图像并显示 它在ImageView中。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
mImageView.setImageBitmap(imageBitmap);
}
}
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 = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
// Save a file: path for use with ACTION_VIEW intents
mCurrentPhotoPath = "file:" + image.getAbsolutePath();
return image;
}
private void setPic() {
// Get the dimensions of the View
int targetW = mImageView.getWidth();
int targetH = mImageView.getHeight();
// Get the dimensions of the bitmap
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
int photoW = bmOptions.outWidth;
int photoH = bmOptions.outHeight;
// Determine how much to scale down the image
int scaleFactor = Math.min(photoW/targetW, photoH/targetH);
// Decode the image file into a Bitmap sized to fill the View
bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = scaleFactor;
bmOptions.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
mImageView.setImageBitmap(bitmap);
}
答案 1 :(得分:0)
我认为三星相机应用程序的质量更好,因为它使用Samsung Camera SDK。它是Camera2 API的扩展。
SDK提供了有用的附加功能(例如相位自动对焦)。尝试启用镜头光学稳定性。