- 浏览: 96691 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
sincerehui:
android二维码的编码与解码(图片解码与摄像头解码) -
nyh1006:
学习一下!
UIScrollView循环滚动 -
bravewly:
为啥扫不出结果呢?是我扫的方式不对么?
android二维码的编码与解码(图片解码与摄像头解码) -
messigoogle:
我说您这个也是跟eoe上的差不多吧,加载的Assert中的图片 ...
android瀑布流 -
gundumw100:
LazyScrollView是偶写的。欢迎使用。呵呵。http ...
android瀑布流
今天上网找了找可以从图片解析二维码 ,而不是从摄像头,找了半天,终于找到了居然不全,所以自己查资料,写了一个 可以生产二维码,并且从图片和摄像头都可以解析的demo。
二维码其实很简单,我用的是Google的ZXing的源代码(在后面的附件里有)。
下面来看一下代码,注释我已经写的很明白了,就不解释了。
生成二维码图片
// 生成QR图 private void encodeQRCode() { try { // 读取输入的String String text = qr_text.getText().toString(); Log.i(TAG, "生成的文本:" + text); if (text == null || "".equals(text) || text.length() < 1) { return; } // android二维码的编码与解码(图片解码与摄像头解码) // 实例化二维码对象 QRCodeWriter writer = new QRCodeWriter(); // 用一个map保存编码类型 Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); // 保持字符集为“utf-8” hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); /* * 第一个参数:输入的文本 * 第二个参数:条形码样式-》二维码 * 第三个参数:宽度 * 第四个参数:高度 * 第五个参数:map保存编码类型 */ BitMatrix bitMatrix = writer.encode(text, BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints); System.out.println("w:" + bitMatrix.getWidth() + "h:" + bitMatrix.getHeight()); // 将像素保存在数组里 int[] pixels = new int[QR_WIDTH * QR_HEIGHT]; for (int y = 0; y < QR_HEIGHT; y++) { for (int x = 0; x < QR_WIDTH; x++) { if (bitMatrix.get(x, y)) {// 二维码黑点 pixels[y * QR_HEIGHT + x] = 0xff000000; } else {// 二维码背景白色 pixels[y * QR_HEIGHT + x] = 0xffffffff; } } } // 生成位图 Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT, Bitmap.Config.ARGB_8888); /* * 第一个参数:填充位图的像素数组 * 第二个参数:第一个颜色跳过几个像素读取 * 第三个参数:像素的幅度 * 第四个参数:起点x坐标 * 第五个参数:起点y坐标 * 第六个参数:宽 * 第七个参数:高 */ bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT); // 显示图片 qr_image.setImageBitmap(bitmap); } catch (WriterException e) { e.printStackTrace(); } }
解析二维码图片:
// 解析QR图片 private void decodeQRCode() { Map<DecodeHintType, String> hints = new HashMap<DecodeHintType, String>(); hints.put(DecodeHintType.CHARACTER_SET, "utf-8"); Bitmap bitmap = ((BitmapDrawable) qr_image.getDrawable()).getBitmap(); RGBLuminanceSource source = new RGBLuminanceSource(bitmap); // 转成二进制图片 BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source)); // 实例化二维码解码对象 QRCodeReader reader = new QRCodeReader(); Result result; try { // 根据解码类型解码,返回解码结果 result = reader.decode(bitmap1, hints); System.out.println("res:》》》》》》》:" + result.getText()); // 显示解码结果 qr_result.setText(result.getText()); } catch (NotFoundException e) { e.printStackTrace(); } catch (ChecksumException e) { e.printStackTrace(); } catch (FormatException e) { e.printStackTrace(); } }
用摄像头解析就更简单了,直接Intent到ZXing中的CaptureActivity类 就OK了。
但是这样扫描完的二维码,自己也用不了呀。不用着急在CaptureActivity类的530行,也就是
// 条码/二维码结果 private void showResult(Result rawResult, ResultHandler resultHandler, Bitmap barcode) { AlertDialog.Builder builder = new AlertDialog.Builder(this); CharSequence displayContents = resultHandler.getDisplayContents(); if (barcode == null) { builder.setIcon(R.drawable.launcher_icon); } else { Drawable drawable = new BitmapDrawable(barcode); builder.setIcon(drawable); } builder.setTitle("Result"); builder.setMessage(displayContents); builder.setPositiveButton("OK",new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(CaptureActivity.this,CaptureActivity.class); startActivity(intent); } }); builder.setNegativeButton(R.string.button_cancel, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { CaptureActivity.this.finish(); } }); builder.show(); }
这个方法中把所有的扫描结果返回了。你可以根据自己的选择往下写逻辑就行了。
源码都在附件里,有兴趣的可以看一下。
发表评论
-
实现ScrollView的嵌套
2012-12-27 10:39 2162今天忽然需要写两个ScrollView嵌套,如: &l ... -
Android4.0新的SDK新特性 (汉化)
2012-10-31 15:40 1352Android 4.0 是一次重要的平台发布版,为用户和 ... -
Fragments (Android官方文档中文版)
2012-10-30 15:44 916原作者为: 苍山。感谢他分享的内容 概述 ... -
仿iphone实现两个view切换翻转动画
2012-10-26 14:59 2375看那些iPhone的view的切换效果非常帅,今天研究了一下从 ... -
android瀑布流
2012-10-26 10:54 2488今天研究了一下瀑布流,来说一下我实现它的方法。 看一下 ... -
Android 连接WIF获取的信息剖析
2012-10-10 13:48 1128Android的参数大致分成两块:系统服务参数和平台系统 ... -
android使用字体库更改字体
2012-07-27 15:34 1395TextView tv = (TextView) thi ... -
Android代码混淆的实践
2012-07-11 12:46 935开发 apk 的时候当然要考虑保护好自己的代码,Android ... -
给Android的音量按钮添加监听事件
2012-07-09 17:02 1370@Override public boolean onK ... -
去掉listview背景变黑和顶底部边缘模糊
2012-06-29 17:24 1182listview在滚动是背景变黑:android:cacheC ... -
Android 在OnCreate()中获取控件高度与宽度
2012-06-20 17:01 2923试过在OnCreate()中获取控件高度与宽度的童鞋都知道,g ... -
android EditText插入字符串到光标所在位置
2012-03-07 14:01 2190EditText mEditText = (EditText) ... -
android tabactivity view切换edittext不弹出软键盘的解决方案
2011-12-21 12:03 2138public void onFocusChange(View ... -
更改CheckBox的样式
2011-12-13 08:43 2393首先在styles.xml添加如下的自定义样式: <s ... -
Android中RatingBar的自定义效果
2011-11-16 10:14 1532有时候android系统提供给我们的ratingbar效果 ... -
TabHost点击按钮布局改变
2011-11-15 09:48 1064main.xml <?xml version=&quo ... -
android获得控件在屏幕中的绝对坐标
2011-11-10 12:56 2614int[] location = new int[2] ; ... -
手势识别
2011-11-10 09:29 886[功能] 何为手势识别? 比如:你在屏幕上从左至右划出的一个动 ... -
Android px和dip以及sp的区别及转换代码
2011-11-09 16:11 1633/** * 根据手机的分辨率从 dp 的单位 转成为 px ... -
android获取屏幕长宽,status bar高度,设置全屏显示
2011-11-09 16:08 1617//获取屏幕长宽 WindowManager wm = ...
相关推荐
【C#二维码编码和解码】是关于使用C#编程语言实现二维码的生成与解析的专题。二维码(Quick Response Code)是一种二维条形码,能够存储大量的文本信息,广泛应用于移动设备、产品标识、网址链接等领域。在本专题中...
总结来说,这个"QR二维码编码及解码程序"涵盖了二维码的核心技术和实现,包括数据编码、纠错处理、图像生成与识别等关键环节。通过学习和研究这个项目,开发者可以深入理解二维码的工作机制,并可能将其应用于各种...
这个过程涉及到了编码与解码两个关键步骤,是现代数字生活中常见的数据交换形式。 在二维码编码过程中,工具会将输入的字符串(比如网址)通过特定算法转化为二进制数据,然后根据QR码的标准布局规则将其分布在...
二维码解码 解码过程涉及读取二维码图像并提取其中的信息。在这个示例中,使用了`qrcode.jar`库来完成解码。以下是一般的解码流程: 1. 引入解码库:确保`qrcode.jar`在项目类路径中。 2. 读取图像:使用`...
`Java利用QRCode.jar包实现二维码编码与解码.txt`这个文件可能是介绍如何在Java项目中具体使用`QRCode.jar`的教程或示例代码。它可能包含详细的步骤、示例代码以及可能出现的问题和解决方案。通过阅读和理解这个文件...
二、二维码解码 1. 图像预处理:首先对扫描到的二维码图像进行去噪、灰度化、二值化等处理,使得图像更利于识别。 2. 定位:通过识别定位图案和定时图案,确定二维码的位置和大小。 3. 校验:利用校正图案进行错误...
这个是帮同学做完毕业设计后留下的东西,其实也就是到网上收集点资料整合下,不过支持android的资源真的很少,看在辛苦的份上,希望大家可怜点分点我,使用遇到问题的同学也可以联系我QQ:379754895,本人专职ios开发...
完整二维码编码和解码包,本人收集整合成一个包,并附带完整的工具方法和运行例子可直接使用到手机客户端或应用。 解压后,引用TwoDimCode.jar包,运行使用TwoDimCode.java 绝对超值,下载看看吧!
2. **二维码解码**: - 解码过程则需要`MultiFormatReader`,它可以读取多种格式的条码。 - 将捕获的二维码图像转换为`LuminanceSource`对象,这是ZXing中处理图像的基础接口。 - `LuminanceSource`对象可以转化...
2. **二维码解码**:解码则是读取二维码中的信息。同样,Zxing库提供了Reader接口,我们可以使用QRCodeReader类来解码二维码图像。在Android中,通常会通过Camera或从本地获取图片,然后使用DecodeHelper类进行解码...
在IT行业中,二维码编码与解码是数据传输和信息交换的一种常见方式,特别是在移动设备上。C#作为.NET框架下的主流编程语言,提供了丰富的库和工具来实现二维码的生成和解析。本文将深入探讨C#二维码编码解码器源码的...
**三、二维码解码** 解码过程是从二维码图像中提取出原始数据。使用QRCoder库,解码步骤如下: 1. 引入解码所需的类库: ```java import de.svenwoltmann.qrcoder.reader.QRCodeReader; import javax.imageio....
二维码编码解码器源码 本源码实现可以在C#中使用的1D/2D编码解码器。条形码的应用已经非常普遍,几乎所有超市里面的商品上面都印有条形码;二维码也开始应用到很多场合,如火车票有二维码识别、网易的首页有二维码...
与传统的条形码相比,二维码能够在更小的空间内存储更多的信息,包括文字、数字、网址、联系信息等,并且可以通过手机摄像头等设备轻松读取。二维码编码通常遵循国际标准,如ISO/IEC 18004。 在.NET环境中,二维码...
二维码编码与解码是计算机视觉和移动应用领域中常见的技术,尤其在信息交换、广告推广、支付服务等方面广泛应用。此压缩包"二维码编码解码源代码qr实.rar"包含了一个.NET平台下的QR码生成和解析的实现,使用了Visual...
C#写的二维码编码类和二维码解码类,不调用任何控件,方便翻译成任何语言,可在任意平台上运行。 内有说明文档,说明怎样设置和调用,使用非常的方便,编码一个类,解码一个类,不像网上搜索的那些各种复杂不好用,...
3. 二维码解码过程: 解码时,扫描设备识别定位图案,确定二维码的边界,然后读取数据区域的单元格状态。根据预先定义的规则,将二进制数据还原为原始信息,如文本、URL等。解码过程中还需要进行错误校验和纠正,...
2012年最新二维码编码和解码程序套件,是开发二维条码生成和自动识别应用参考实例。自动识别PDF417、QRCODE、DataMatrix和HanXin条码图形,同时又能将文本、图像、声音和指纹混合编码,生成二维条码。二维码种类包括...
解码过程与编码相反,首先通过扫描设备读取二维码图像,然后对图像进行解析,找到定位图案、定时图案和版本信息等关键元素。根据这些元素确定数据区域,再进行错误纠正,恢复出原始的编码数据。解码器会识别出编码...