Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
来源:互联网 发布:淘宝望远镜 编辑:程序博客网 时间:2024/05/20 18:19
在网上找了很多方法,但最后都有问题,自己调试了好几个小时,最后终于完美解决了竖屏识别。
首先你需要有zxing项目的简化版代码,在这里。
使用简化版可以免去许多不必要的代码,方便学习研究,更好定位核心功能。
如果你调试成功后,就可以着手修改将其变为竖屏识别了。
第1步:
在AndroidManifest中将CaptureActivity的screenOrientation属性做如下修改:
android:screenOrientation="portrait"
第2步:
我们要把摄像头预览景调为竖向
CameraConfigurationManager类中的setDesiredCameraParameters()方法中添加如下代码:
// 使摄像头旋转90度 setDisplayOrientation(camera, 90);
然后在CameraConfigurationManager类的最后添加setDisplayOrientation()方法:
最后在CameraConfigurationManager中的initFromCameraParameters()方法的Log.d(TAG, "Screen resolution: " + screenResolution);句后面添加如下代码,这段代码是为了解决摄像头竖过来后图像拉伸的问题:
第3步:
CameranManager类中getFramingRectInPreview()方法将:
// 下面为横屏模式 rect.left = rect.left * cameraResolution.x / screenResolution.x; rect.right = rect.right * cameraResolution.x / screenResolution.x; rect.top = rect.top * cameraResolution.y / screenResolution.y; rect.bottom = rect.bottom * cameraResolution.y / screenResolution.y;
替换为:
// 下面为竖屏模式 rect.left = rect.left * cameraResolution.y / screenResolution.x; rect.right = rect.right * cameraResolution.y / screenResolution.x; rect.top = rect.top * cameraResolution.x / screenResolution.y; rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y;
第4步:
PlanarYUVLuminanceSource类中的getRow()方法为识别条形码部分,
getMatrix()方法为识别二维码部分
renderCroppedGreyscaleBitmap()方法为生成获取的码图部分
将getRow()中的:
int offset = (y + top) * dataWidth + left;
getMatrix()中的:
int inputOffset = top * dataWidth + left;
inputOffset += dataWidth;
renderCroppedGreyscaleBitmap()中的:
int inputOffset = top * dataWidth + left;
inputOffset += dataWidth;
这些语句中dataWidth全部替换为dataHeight
同时将PlanarYUVLuminanceSource构造方法中:
if (left + width > dataWidth || top + height > dataHeight) { throw new IllegalArgumentException("Crop rectangle does not fit within image data."); }
dataWidth与dateHeight中互换位置即可。
此时,你的程序竖屏识别码图应该没有任何问题了。至于取景框的样式,大家可以在自定义的ViewfinderView中修改成自己喜欢的样式。
- Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
- Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
- Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
- Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
- Android二维码识别 开源项目ZXing的编译
- Android二维码识别 开源项目ZXing的编译
- 利用开源ZXing项目实现条形码和二维码扫描识别 —— Android端
- zxing横屏改为竖屏识别,多次扫描,以及存在的摄像拉伸的问题
- zxing横屏改为竖屏识别,多次扫描,以及存在的摄像拉伸的问题
- Android ZXing改横屏识别为竖屏识别[转]
- python调用zxing项目进行二维码识别
- ZXing改横屏识别为竖屏识别
- ZXing改横屏识别为竖屏识别
- ZXing改横屏识别为竖屏识别
- ZXing改横屏识别为竖屏识别
- ZXing改横屏识别为竖屏识别
- ZXing改横屏识别为竖屏识别
- zxing二维码识别
- Oracle执行计划不走索引的原因总结
- phpcms会员中心上传图片,传递参数有错误提示解决办法
- Spark与深度学习框架——H2O、deeplearning4j、SparkNet
- bootstrap汉堡按钮
- 使用ItemTouchHelper拖拽时两个item跟着动解决方法
- Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
- 《深入探索C++对象模型》第二章:构造函数语意学(上)
- OpenGL入门学习
- 牛客网算法学习笔记-动态规划(2)
- MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- C# ajax 大文件上传
- 视频质量分析指标分析------以ClearView为例
- 窗体部件效果之阴影
- 简单MediaPlayer 例子