如何在android中使用相机捕获自定义图像大小?

Posted

技术标签:

【中文标题】如何在android中使用相机捕获自定义图像大小?【英文标题】:How to capture a custom image size with the camera in android? 【发布时间】:2011-08-12 02:30:55 【问题描述】:

如何在android中捕获方形图像? 我想在android中通过intent调用Camera来捕获一个正方形的图像(例如300x300像素),我该怎么做?

【问题讨论】:

你需要给我们更多的背景信息。 我的上下文是:我想在android中捕获宽度= 300px,高度= 300px的图像。我该怎么做? 【参考方案1】:

编辑: 自 API 级别 21 起已弃用。

使用 Camera.Size 嵌套类

http://developer.android.com/reference/android/hardware/Camera.Size.html

来自安卓参考:

http://developer.android.com/reference/android/hardware/Camera.html

类概述

Camera 类用于设置图像捕获设置、开始/停止预览、捕捉图片以及检索帧以进行视频编码。此类是 Camera 服务的客户端,它管理实际的相机硬件。

确保相机支持该尺寸(很可能不支持)。如果没有,请以最接近的分辨率拍照并裁剪或调整大小。

Camera myCamera = Camera.open(0);
List<Camera.Size> sizes = myCamera.getPArameters().getSupportedPictureSizes();

要了解相机意图,请在 SO 中查看这些问题:

Android camera intent

Camera intent android

【讨论】:

感谢 Aleadam,但我需要捕捉一张方形图像。没有任何解决方案,不是吗? @Nguyen :“如果没有,请以最接近的分辨率拍照并裁剪或调整大小。”我相信这是您唯一的选择(这并不难无论如何都要实施)。 那么,如何在 android 2.x 中裁剪图像?我对此没有解决方案。有示例代码吗? 在这里查看答案:***.com/questions/3846338/…(特别是com.android.camera.action.CROP Intent) 活动 com.android.camera.action.CROP 在 android 2.x, Aleadam 中不存在。【参考方案2】:

为什么没有人提到这样的事情?

Bitmap resultBitmap = Bitmap.createBitmap(sourceBitmap, xStart, yStart, 300, 300);

sourceBitmap 是从相机和xStartyStart 开始裁剪的原始位置。结果应该在左上角有xStartyStart

【讨论】:

如果捕获的图像对于位图来说不是太大,这将是一个不错的选择。我有一个捕获图片的应用程序,但是如果我想以这种方式调整它的大小,我会收到 outOfMemoryException,因为捕获的图片太大。 @Opiatefuchs 这表明该设备无法处理自己的图像捕获。这没什么意义。你试过 .. 吗? @JaroslavZáruba 这并不意味着,它取决于几个因素为什么 outOfMemoryException 发生在该特定设备上。源位图应首先按两倍缩小。 @JaroslavZáruba 这并不意味着,它取决于几个因素为什么 outOfMemoryException 发生在该特定设备上。源位图应首先使用 BitmapFactory.Options 缩小两倍,inScale 参数 @Ewoks 如果他没有别的东西吃相机,那么他应该能够加载全尺寸的位图。

以上是关于如何在android中使用相机捕获自定义图像大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中结合覆盖位图和捕获的图像?

在android中减小从相机捕获的图像的大小

如何使用自定义相机 API 制作圆形框架布局并捕获圆形图像?

从uiimagepicker捕获图像后如何自定义图像

Android中某些相机分辨率的不同捕获输出大小

在 Android 中使用相同的 Intent 捕获图像和视频