我正在构建一个类似于图片中所示的条形码扫描仪的相机应用程序。我需要使用Camera
和android.hardware.camera2
API来支持android API> = 19.
主要思想是在整个屏幕上进行相机预览,但仅保存未变暗的部分(或拍摄未变暗的区域)。我已经做了一些研究,并发现通过Camera
和android.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
定义的区域(实际上会裁剪图像的另一部分)
我很感激有关如何实现理想行为的任何建议和提示。
答案 0 :(得分:0)
已经有一段时间了,但人们仍然对这个问题感兴趣。这就是为什么我要分享我如何解决这个问题的原因。