比较很简单:我用使用CameraManager的自定义相机拍照。然后,我用默认的Galaxy Note 5相机拍摄同一张照片。CameraManager可用的最大尺寸是1836年的3264,所以我使用它,并将三星相机的分辨率设置为相同的分辨率。结果
然后我尝试将CameraManager照片设置为
captureBuilder.set(CaptureRequest.JPEG_QUALITY, (byte) 100);
仍然没有变化。嗯,只有一个变化:使用CameraManager拍摄的照片的文件大小变为2.3MB(以前是0.5MB),而三星照片的大小(仍然是)1.6MB。因此,即使尺寸较大,使用CameraManager拍摄的照片质量仍然较低。如何解决此问题:如何使使用CameraManager拍摄的照片与使用Note 5附带的默认相机应用程序拍摄的照片具有相同的质量?
我认为三星库存相机应用程序的质量更好,因为它使用三星相机SDK。这是相机2 API的扩展。
SDK提供了有用的附加功能(例如阶段自动聚焦)。尝试启用镜头光学稳定。
这些是我们在使用Camer manager时使用的一些方法,此方法可能会对您有所帮助。
Android摄像头应用程序将发送给onActivityResult()的意图中的照片编码为extras中的一个小位图,位于“data”键下。以下代码检索此图像并将其显示在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);
}
可使用前端相机或背面相机拍摄照片。 A ) (显示模式) 轻触图标可切换为显示模式。 B ) (位置数据)/(切换相机)/(切换图像大小) 启用位置数据的使用设定即可显示(位置数据)。轻触图标可使用Wi-Fi、GPS*、手机基地台*的信息取得位置数据。取得后会显示(已取得位置数据),拍摄照片时会同时记录位置数据。 * 仅限3G/Wi-Fi机种 C ) (快门) 轻触图标可拍摄照片。 D ) 已拍摄
我写了这段代码,用相机拍照,然后将其转换为jpeg文件并将其上传到Parse.com作为ParseFile。 问题是,图片非常小(153 x 204像素),质量非常低。 我需要图片是至少5 MP质量和裁剪到300x300像素。 这是我现在使用的代码。 提前感谢。
标题问题99.9%的答案如下: 当您在
问题内容: 我需要在活动中获得并显示照片库中最近拍摄的3张照片,而无需任何点击。 完成此步骤后,滚动时,我应该以3 x 3的方式拍摄其他照片。 您知道快速执行此操作的正确方法吗?谢谢。 问题答案: 这是使用适用于iOS 8+设备的框架的解决方案:
问题内容: 我想在我的应用中以真实的黑白照片。我也在该网站上搜索了解决方案,但是我总是找到将照片放成灰度的解决方案(例如在本主题中),但这不是我想要的… 我还发现了一个提出这一建议的主题: 但是图像质量太差了… 请问有人有主意吗? 谢谢 问题答案: 如果您希望图像为1位黑白,则可以使用简单的(慢速)阈值算法 但是,根据看起来不太好的东西,要获得更好的结果,您需要使用抖动算法,请参阅算法概述 -这是
我需要捕捉多张照片使用Camera2 API后,特定的间隔,如5秒。我需要在没有预演的情况下做。我可以捕获一张单张照片没有预览,但我需要知道如何捕获多张照片?一旦相机打开,我不想一次又一次地设置所有的参数,我只想在特定的间隔后捕捉照片,一旦所有的照片都捕捉到了,然后我会关闭相机。 也只是第一次被捕获的图像。第二次调用takepciture()方法时,什么也没有发生。 下面是我的代码。