拍摄给定尺寸的Android照片

Posted

技术标签:

【中文标题】拍摄给定尺寸的Android照片【英文标题】:Take photo of given size Android 【发布时间】:2017-01-23 19:09:43 【问题描述】:

我正在开发一个拍摄照片并将其保存在 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);
    

【问题讨论】:

【参考方案1】:

也可以通过想要的尺寸

没有。

在保存之前可以有位图吗?

不是真的。您可以编写自己的ContentProvider 并为此使用Uri,而不是文件。当相机应用程序尝试保存内容时,您会首先在内存中获取该信息。但是,您将因OutOfMemoryError 而崩溃,因为您很可能没有足够的堆空间来保存全分辨率照片。

您可以使用BitmapFactoryinSampleSize 中设置的inSampleSize 来读取相机写入的文件,保存您认为合适的调整大小的图像,然后删除全分辨率图像。或者,跳过EXTRA_OUTPUT,您将获得返回给您的缩略图,该缩略图是通过在传递给onHandleIntent()Intent 上调用getExtra("data") 获得的。

【讨论】:

我也想过保存它,调整它的大小,然后删除全尺寸的照片,但我希望能有更高效的东西。如果不可能,我将以这种方式进行。谢谢

以上是关于拍摄给定尺寸的Android照片的主要内容,如果未能解决你的问题,请参考以下文章

Android - 拍摄照片

Android笔记67Android之使用系统中的相机功能(拍照保存照片显示拍摄的照片照片保存到图库等操作)

Android:BroadcastReceiver 意图检测拍摄的相机照片?

Android:保存用户使用相机拍摄的照片

Android相机开发那些坑

一致地从 Android 供应商的 MediaStore 加载照片(由相机拍摄)