【问题标题】:Android crop camera imageAndroid 裁剪相机图像
【发布时间】:2016-12-27 17:39:46
【问题描述】:

我正在构建一个类似于图片中显示的条形码扫描仪的相机应用。我需要同时使用 Cameraandroid.hardware.camera2 API 来支持 android API >= 19。

主要思想是在整个屏幕上进行相机预览,但只保存未变暗的部分(或拍摄未变暗区域的照片)。我已经做了一些研究,发现通过Cameraandroid.hardware.camera2 API 只拍摄部分图片是不可能的(但我不是 100% 确定)。所以我认为我需要对由于相机捕获而收到的字节数组(压缩为 JPEG)进行一些操作。

我尝试以这种方式使用 BitmapRegionDecoder:

BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(bytes, 0, bytes.length, false);
Bitmap bitmap = decoder.decodeRegion(new Rect(500, 500, 1500, 1500), null);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);

其中bytes 是相机捕获的JPEG 压缩结果。但是这种方法会改变图像的方向并且不会裁剪Rect定义的区域(实际上是裁剪图像的另一部分)

对于如何实现所需行为的任​​何建议和提示,我将不胜感激。

【问题讨论】:

  • 你让它工作了吗?

标签: android image camera android-camera2


【解决方案1】:

已经有一段时间了,但人们仍然对这个问题感兴趣。这就是为什么我要分享我是如何解决这个问题的。

  • 我将从相机拍摄的完整图像保存为 .jpg。
  • 然后我从 .jpg 文件中获取旋转角度。裁剪不同区域的问题是因为每个图像都有旋转角度,我可以从 ExifInterface 获得
  • 将裁剪区域(相机上的浅色矩形)缩放到保存的图像尺寸。
  • 将裁剪区域旋转一个先前已获得的角度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-01
    • 2013-05-26
    • 2015-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    相关资源
    最近更新 更多