Android条码扫描及图片生成
来源:互联网 发布:linux命令行下载samba 编辑:程序博客网 时间:2024/04/19 09:45
Android条码扫描及图片生成
上周和老婆去超市,结账的时候老婆拿出手机拍的会员卡照片,但是怎么都扫不出来。于是就产生的做一个扫码应用的想法,并且可以把扫到的内容生成图片,方便使用。
- Android条码扫描及图片生成
- 简介
- 效果图
- QA
- 1导入工程各种zxing的类找不到各种ClassNotFoundException
- 2从相册选择图片及剪切功能实现
- 3对imageview的bitmap手动回收后下次进入Activity会停止运行log显示trying to use a recycled bitmap
- 4如何对相册选择的图片解码
- 5如何编码
简介
网络搜索发现主要有ZXing和Zbar这两个库,并且发现了牛人的帖子:
《打造极致二维码扫描系列》 – ZXing开发详解
http://www.eoeandroid.com/thread-549171-1-1.html
(出处: eoe 移动开发者论坛)
楼主还无私的给出了源码,果断下载来,在此基础上增加生成图片的功能。
经过几天的加班,总算把想要的功能实现了,虽然界面比较简单,功能好用就行。这里记录下过程中的一下问题,方便查阅。
下载试用地址:http://shouji.baidu.com/software/item?docid=7773544
使用方法:
1. 通过camera扫描条形码或二维码,或者从相册选择,或者点击”条码生成”按钮
2. 在”扫描结果”界面输入需要生成的”内容”(扫描的结果也在这里),然后输入”卡名”,卡名是作为图片的保存名及显示在图片上面方便查看
3. 点绿色圆点按钮既可以生成图片,生成图片地址”/sdcard/shicard/”
4. 点击扫描界面右上角打开闪光灯,左上角打开查看图片界面
5. 生成的图片就可以到超市之类的地方了,省去了带着卡的麻烦
效果图
(1)扫描界面
(2)扫描结果及生成图片界面
(3)从相册选择图片界面
QA
(1)导入工程各种zxing的类找不到,各种ClassNotFoundException
ANS:找了各种方法都不行,实在没办法重新下了一个ADT bundle竟然没问题了,不知道是不是和其他软件有冲突.
(2)从相册选择图片及剪切功能实现
Ans:
1>从相册选择图片
Intent innerIntent = new Intent(Intent.ACTION_PICK);innerIntent.setType("image/*"); startActivityForResult(innerIntent, REQUEST_CODE);
选择后在原Activity的onActivityResult(onResume在其之后)方法,用data.getData()获得选择图片的Uri.
2>考虑到选择图片全部解码速度会比较慢,对选择的图片进行剪切,刚开始直接时候返回的图片数据,但是经常识别不了。经过多次测试发现是返回数据用bundle传送数据,bundle传送数据大小有限,所以拿到的可能是缩略图的数据。后来改为保存剪切后的图片,在读这个图片,这样就正常了.
Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");imageuri = Uri.parse(IMAGE_LOCAL);intent.putExtra("crop",true);intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);intent.putExtra("outputX", 300);intent.putExtra("outputY", 300);intent.putExtra("noFaceDetection", true);//save file to sdcard/tmp.pngintent.putExtra("return-data", false);intent.putExtra(MediaStore.EXTRA_OUTPUT, imageuri);intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString());startActivityForResult(intent, 0);
(3)对imageview的bitmap手动回收后,下次进入Activity会停止运行,log显示trying to use a recycled bitmap
ANS:在调用recycle函数的时候已经注意是在bitmap不会再使用的时候,多次实验发现只有在imageview不设置新的bitmap直接返回,下次再进入才会出错。
查看xml文件,发现写成android:src=”@drawable/shadow”,这样返回的时候就回收了drawable/shadow,下次再进入Activity自然就使用了已回收的bitmap,改为android:background=”@drawable/shadow”后问题解决.
(4)如何对相册选择的图片解码
ANS:仿照camera的方法用multiFormatReader解码,不过相册图片是RGB格式就要多一步RGB到YUV的转换,再仿照camera二值化后就可以解码
int[] lpixels = new int[lwidth*lheight];photo.getPixels(lpixels, 0, lwidth, 0, 0, lwidth, lheight);//covert RGB to YUVRGBLuminanceSource source = new RGBLuminanceSource(lwidth, lheight, lpixels);BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));rawResult = multiFormatReader.decodeWithState(bitmap);
(5)如何编码
ANS;取得编码内容和格式后使用multiformatwriter.encode()即可,然后生成数据转成RGB格式保存.
- Android条码扫描及图片生成
- Android条码扫描
- Android扫描及生成二维码
- Android 蓝牙条码扫描输入法
- Android之条码扫描二维码扫描
- Android之条码扫描二维码扫描
- android zxing 扫描条码,竖屏扫描
- 条码扫描二维码扫描——ZXing android 源码导入及使用
- [Android 高级教程] Android条码扫描
- 条码扫描
- Android应用开发之扫描二维码和条码的SDK及API
- ZPL 打印条码、二维码及小票(中文/汉字),生成条码、二维码图片【Asp.Net】-含示例代码
- ZPL 打印条码、二维码及小票(中文/汉字),生成条码、二维码图片【Asp.Net】-含示例代码
- Android扫描二维码及生成二维码Demo
- Android条码扫描ZBar和ZXing浅谈
- Android条码扫描ZBar和ZXing浅谈
- ZXing条码扫描Android版编译过程
- react-native 实现条码扫描(ios&android)
- 分块法 hdu1166 敌兵布阵
- scanf和printf的另类用法
- gdb调试段错误
- 排列(permutation)
- Android自定义View中代码设置style
- Android条码扫描及图片生成
- c++ new 的几个用法
- @Override must override a superclass method 问题解决
- 黑马程序员--Java基础Day10
- 进程管理(一)
- 利用GPU和Caffe训练神经网络
- 在Android中如何的跟html交互
- linux的proc
- GirdLayout布局:更改其中的TextView控件的TextSize属性后,出现控件未对齐情况