Android 相机图像太小
从最近几天开始,我一直在忍受相机图像太小的问题,其大小为120x160 场景是,当我从相机捕获图像并将该图像转换为字节[]时,它变得太小 以下是我正在使用的代码:Android 相机图像太小,android,bitmap,android-camera,bytearray,android-camera-intent,Android,Bitmap,Android Camera,Bytearray,Android Camera Intent,从最近几天开始,我一直在忍受相机图像太小的问题,其大小为120x160 场景是,当我从相机捕获图像并将该图像转换为字节[]时,它变得太小 以下是我正在使用的代码: Bitmap unscaledBitmap = (Bitmap) data.getExtras().get("data"); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); unscaledBitmap .compress(Bitmap.CompressF
Bitmap unscaledBitmap = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
unscaledBitmap .compress(Bitmap.CompressFormat.PNG, 30, bytes);
byte[] bytesDoc1 = bytes.toByteArray();
我对此一无所知,但我已经尝试了很多解决方案,但都不适合我
请帮帮我。你得到的只是缩略图
如果你想要真实的图像,最好给相机一个存储图像的文件路径。然后可以在onActivityResult中使用该路径。您得到的只是缩略图
如果你想要真实的图像,最好给相机一个存储图像的文件路径。然后,您可以在onActivityResult中使用该路径。您需要为要存储真实图像的相机指定路径。因为
data.getExtras().get(“数据”)代码>只需从真实图像中获取缩略图
看看这段代码:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Create the File where the photo should go
File photoFile = createImageFile();
if (photoFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, 1);
}
这是创建文件的方法:
private File createImageFile() {
long timeStamp = System.currentTimeMillis();
String imageFileName = "NAME_" + timeStamp;
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
return image;
}
然后,您可以读取所创建图片的真实路径。您需要为要存储真实图像的相机指定路径。因为data.getExtras().get(“数据”)代码>只需从真实图像中获取缩略图
看看这段代码:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Create the File where the photo should go
File photoFile = createImageFile();
if (photoFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, 1);
}
这是创建文件的方法:
private File createImageFile() {
long timeStamp = System.currentTimeMillis();
String imageFileName = "NAME_" + timeStamp;
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
return image;
}
然后,您可以阅读创建的图片的真实路径。不确定是否已经太晚,无法帮助您解决此问题。我也面临着这个问题,只是想知道为什么那张照片这么小。
原因是,在某些手机(LG 5)上,默认的图片大小是最低的(160x120)。为了修复此错误,您必须从相机获取支持的图片大小列表。
类似于camera.getParameters.getSupportedPictureSizes()
,尝试选择所需的最小分辨率,然后setPictureSize
设置为所选的最佳匹配大小。
这肯定会解决问题。不确定在这个问题上帮助您是否为时已晚。我也面临着这个问题,只是想知道为什么那张照片这么小。
原因是,在某些手机(LG 5)上,默认的图片大小是最低的(160x120)。为了修复此错误,您必须从相机获取支持的图片大小列表。
类似于camera.getParameters.getSupportedPictureSizes()
,尝试选择所需的最小分辨率,然后setPictureSize
设置为所选的最佳匹配大小。
这肯定会解决这个问题。我使用了scaleTypefitXY
,效果很好
<ImageView
android:id="@+id/imgPicture"
android:layout_width="70dp"
android:layout_height="70dp"
scaleType="fitXY"/>
我使用了scaleTypefitXY
,它很有效
<ImageView
android:id="@+id/imgPicture"
android:layout_width="70dp"
android:layout_height="70dp"
scaleType="fitXY"/>
感谢您的快速响应。但我已经试过了,但对我来说也不起作用。谢谢你的快速回复。但我已经试过了,但对我来说也不起作用。如果你的targetSdkVersion<24,它会给android.os.FileUriExposedException。对于targetSdkVersion>=24,我们必须使用FileProvider classIt,如果您的targetSdkVersion<24,它将给出android.os.FileUrieExposedException。对于targetSdkVersion>=24,我们必须使用FileProvider类