如何在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 是从相机和xStart
和yStart
开始裁剪的原始位置。结果应该在左上角有xStart
、yStart
。
【讨论】:
如果捕获的图像对于位图来说不是太大,这将是一个不错的选择。我有一个捕获图片的应用程序,但是如果我想以这种方式调整它的大小,我会收到 outOfMemoryException,因为捕获的图片太大。 @Opiatefuchs 这表明该设备无法处理自己的图像捕获。这没什么意义。你试过 .. 吗? @JaroslavZáruba 这并不意味着,它取决于几个因素为什么 outOfMemoryException 发生在该特定设备上。源位图应首先按两倍缩小。 @JaroslavZáruba 这并不意味着,它取决于几个因素为什么 outOfMemoryException 发生在该特定设备上。源位图应首先使用 BitmapFactory.Options 缩小两倍,inScale 参数 @Ewoks 如果他没有别的东西吃相机,那么他应该能够加载全尺寸的位图。以上是关于如何在android中使用相机捕获自定义图像大小?的主要内容,如果未能解决你的问题,请参考以下文章