拍摄给定尺寸的照片 Android
Take photo of given size Android
我正在开发一个拍摄照片并将其保存在 Android/data/package/files 中的应用程序。我想减少使用的存储空间,所以我想在保存照片之前调整照片大小。目前,我称新意图作为额外的输出路径传递。是否也可以传递所需的大小,或者可以在保存之前拥有位图?
public void takePicture(View view){
Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File f = new File(getPath(nameEdit.getText().toString()));
path = f.getAbsolutePath();
pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
if (pictureIntent.resolveActivity(getPackageManager())!=null){
startActivityForResult(pictureIntent,REQUEST_IMAGE_CAPTURE);
}
}
Is possible to pass also the size wanted
没有
is possible to have the bitmap before saving it?
不是真的。您可以编写自己的 ContentProvider
并为此使用 Uri
,而不是文件。当相机应用程序尝试保存内容时,您会先在内存中获取该信息。但是,您将因 OutOfMemoryError
而崩溃,因为您很可能没有足够的堆 space 来保存全分辨率照片。
您可以使用 BitmapFactory
和 BitmapFactory.Options
中设置的 inSampleSize
来读入相机写入的文件,将调整后的图像保存为您认为合适的尺寸,然后删除全分辨率图像。或者,跳过 EXTRA_OUTPUT
,您将获得返回给您的缩略图,这是通过在传递给 onHandleIntent()
的 Intent
上调用 getExtra("data")
获得的。
我正在开发一个拍摄照片并将其保存在 Android/data/package/files 中的应用程序。我想减少使用的存储空间,所以我想在保存照片之前调整照片大小。目前,我称新意图作为额外的输出路径传递。是否也可以传递所需的大小,或者可以在保存之前拥有位图?
public void takePicture(View view){
Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File f = new File(getPath(nameEdit.getText().toString()));
path = f.getAbsolutePath();
pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
if (pictureIntent.resolveActivity(getPackageManager())!=null){
startActivityForResult(pictureIntent,REQUEST_IMAGE_CAPTURE);
}
}
Is possible to pass also the size wanted
没有
is possible to have the bitmap before saving it?
不是真的。您可以编写自己的 ContentProvider
并为此使用 Uri
,而不是文件。当相机应用程序尝试保存内容时,您会先在内存中获取该信息。但是,您将因 OutOfMemoryError
而崩溃,因为您很可能没有足够的堆 space 来保存全分辨率照片。
您可以使用 BitmapFactory
和 BitmapFactory.Options
中设置的 inSampleSize
来读入相机写入的文件,将调整后的图像保存为您认为合适的尺寸,然后删除全分辨率图像。或者,跳过 EXTRA_OUTPUT
,您将获得返回给您的缩略图,这是通过在传递给 onHandleIntent()
的 Intent
上调用 getExtra("data")
获得的。