导航:首页 > 编程语言 > zbar源代码

zbar源代码

发布时间:2023-03-01 16:06:54

⑴ ZBarSDK怎么可以快速读取和解码

ps:在调试过程中正好苹果发布了iOS7,于是也从Xcode 4升级了Xcode最新版,同样真机设备也从6.1.3升级到7.0,看看会不会有兼容问题,总体来说没有问题
下面介绍一下如何在iOS设备上使用二维码
1.扫描二维码(包括读取和解码)
扫描二维码的开源库有很多如 ZBar、ZXing等。博主先尝试了ZXing,竖屏的情况下ZXing没有问题,但是似乎横屏会出现错位的情况。于是博主放弃ZXing,使用ZBar。
这里要提一句,ZXing的开源做的比ZBar好,读取和解码速度也快,但是整合到自己的工程中是见痛苦的事情,不光是导入整个Demo工程,设置也相对繁琐,如果不是真的需要超高性能应用的开发者,博主还是建议使用ZBar。
总的流程如下:
①下载ZbarSDK,包含ZbarSDK头文件包、libzbar.a静态链接库文件以及资源文件三部分;
②在新工程中导入以下框架:AVFoundation.framework、CoreMedia.framework、CoreVideo.framework、QuartzCore.framework、libiconv.dylib(已存在则不需要重新加入);
③将ZbarSDK加入工程;

④检查libzbar.a链接库是否正常,如果没有自动链接,需要手动加入,如下图:

⑤在需要使用的页面.h文件中引用头文件#import "ZBarSDK.h"
⑥在需要使用的页面.h中继承 <ZBarReaderDelegate>协议
⑦在.m中实现协议的方法- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info
[cpp] view plain
id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
break;
[self dismissViewControllerAnimated:YES
completion:^{
}];
NSString *code = [NSString stringWithString:symbol.data];
⑧实现开始扫描的按钮功能
[cpp] view plain
ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
reader.supportedOrientationsMask = ZBarOrientationMaskAll;

ZBarImageScanner *scanner = reader.scanner;
[scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to: 0];
[self presentViewController:reader
animated:YES
completion:^{
}];

2.生成二维码
在生成二维码的库中QREncoder最为常见,但是由于中文字符的特殊性,生成中文的时候会出现一定的错误,所以博主改用libqrencode,是一个纯C编写的类库,支持面也更广泛。
①下载libqrencode源码;
②在新工程中导入以下框架:AVFoundation.framework、CoreMedia.framework、CoreVideo.framework、QuartzCore.framework、libiconv.dylib(已存在则不需要重新加入);
③将libqrencode源码加入工程;
④需要使用的页面.m文件中引用头文件#import "QRCodeGenerator.h";
⑤实现生成二维码图片的方法
[cpp] view plain
UIImage *image = [QRCodeGenerator qrImageForString:self.codeString imageSize:self.imageView_Code.bounds.size.width];
3.自定义扫描页
ZXing支持自己创建扫描页面,而由于ZBar使用的.a的链接库文件,所以需要修改他生成的扫描页,不能直接新建一个。
在上文中扫描二维码第⑧项,对reader进行一些修改,代码如下:
[cpp] view plain
for (UIView *temp in [reader.view subviews]) {
for (UIToolbar *toolbar in [temp subviews]) {
if ([toolbar isKindOfClass:[UIToolbar class]])
{
UIBarButtonItem *item1 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(dismissOverlayView:)];

UIBarButtonItem *item2 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem: target:nil action:nil];

UIBarButtonItem *item3 = [[UIBarButtonItem alloc]initWithTitle:@"相册" style:UIBarButtonItemStyleBordered target:self action:@selector(clickPhotoToolBarItem:)];
NSArray *array = [NSArray arrayWithObjects:item1,item2,item3,nil];

[toolbar setItems:array animated:YES];
}
}
}
上述代码中,取消按钮和相册按钮方法等需要自己定义。方法中详细代码如下:
[cpp] view plain
//取消按钮方法
- (void)dismissOverlayView:(id)sender{
[self dismissViewControllerAnimated:YES
completion:^{
}];
}
// 选取相册
-(void)clickPhotoToolBarItem:(id)sender
{
if ([UIImagePickerController isSourceTypeAvailable:])
{
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.allowsEditing = NO;
imagePicker.sourceType = ;

[self dismissViewControllerAnimated:NO completion:^{}];
[self presentViewController:imagePicker animated:YES completion:^{}];
}
}

⑵ python2.7怎么安装zbar

为了virtualenv里的python能用,编译时候要指定安装到/usr。

编译文件不多,一下就完了。步骤如下:

./configure –disable-video –without-qt –without-gtk –without-x –prefix=/usr

make

sudo make install

应该还需要安装ImageMagick,libjpeg-devel,zlib-devel之类的库,python环境里需要安装zbar和PIL。

上测试代码:
import zbar
from PIL import Image

scanner = zbar.ImageScanner()
scanner.parse_config('enable')
img = Image.open('./test.jpg').convert('L')
w, h = img.size
zimg = zbar.Image(w, h, 'Y800', img.tobytes())

scanner.scan(zimg)

for s in zimg:
print s.type, s.data

linux 下编译zbar时出现问题求助 video support failed

ZBar 有个问题,对于中文二维码的支持经常出现乱码。ZBar 缺省支持 SHIF-JIS, UTF-8, ISO8859-1 ,但是不支持 GB18030,而很多生成的二维码都是 GB18030 (或者 GBK, GB2312)的,所以 ZBar 解码出来就直接乱码了

这个修改其实很简单,只需要修改一个文件就可以了,见下面代码。

zbar/qrcode/qrdectxt.cObjective-C
intqr_code_data_list_extract_text(constqr_code_data_list*_qrlist,
zbar_image_scanner_t*iscn,
zbar_image_t*img)
{
iconv_tsjis_cd;
iconv_tutf8_cd;
iconv_tlatin1_cd;
constqr_code_data*qrdata;
intnqrdata;
unsignedchar*mark;
intntext;
inti;
qrdata=_qrlist->qrdata;
nqrdata=_qrlist->nqrdata;
mark=(unsignedchar*)calloc(nqrdata,sizeof(*mark));
ntext=0;


/ 重点在这里,我们不要 ISO8859-1,直接换成 GB18030 就可以了

//latin1_cd=iconv_open("UTF-8","ISO8859-1");
latin1_cd=iconv_open("UTF-8","GB18030");
sjis_cd=iconv_open("UTF-8","SJIS");
utf8_cd=iconv_open("UTF-8","UTF-8");

我们下载的iphone zbar sdk 里并没有这个文件,只有libzbar.a这就需要我们用源码重新编译libzbar.a

⑷ android里面 条形码扫描 应该是怎么做的,有没有源码 什么的,发一个给我啊

1、下载ZBar官方SDK程序(下载链接:http://zbar.sourceforge.net/index.html),并打开项目,如下图:

阅读全文

与zbar源代码相关的资料

热点内容
那个手机app怎么连接 浏览:748
手机软排数据线四根线怎么接 浏览:919
看新闻在哪个app看 浏览:138
存储的业务数据是什么 浏览:260
日本ip密码错误 浏览:63
tf卡能自己写程序吗 浏览:775
qq45454 浏览:324
2个独立excel文件并排查看 浏览:138
excel文件转换提示异常 浏览:461
眼睛电脑数据单怎么看 浏览:584
柱状图如何添加数据单位 浏览:173
电脑红警怎么设置网络 浏览:289
什么牌子苹果数据线最快 浏览:438
java如何访问mysql数据库 浏览:140
win7把桌面文件移动 浏览:897
恋爱app在哪里退订 浏览:206
小米手机的录音文件在哪个文件夹 浏览:714
uc浏览器有哪些app 浏览:168
下列哪个是创建数据库的命令 浏览:87
ghost文件超过4g的文件规则 浏览:901

友情链接