1. 谁有C语言或C++编写的二维码解码软件的源程序
这个程序是运行在什么平台的?
二维码的输入来自摄像头还是来自图片?
目前来看,网上有一些开源的跨平台的开发包,需要安装相应的库才能使用。不可能像你想象的那么简单给你发个源代码你就立刻能用了。
比较实用的一个开发包是Zbar,开源不收费。亲测在Win7,WinXP环境下可以成功编译运行。
http://zbar.sourceforge.net
去这里下载他的SDK,里面有相应的例程,根据你的具体运行环境和具体的需要来修改吧。
祝你好运
2. android zbar要导入哪些文件
下载源码包,将相关的代码文件导入到Xcode项目中。
zbar 相关的c api
./zbar
zbar 相关的c/c++ header
./include
zbar iphone的obj-c code and related header
./iphone
3. android里面 条形码扫描 应该是怎么做的,有没有源码 什么的,发一个给我啊
1、下载ZBar官方SDK程序(下载链接:http://zbar.sourceforge.net/index.html),并打开项目,如下图:
4. Windows系统怎么安装php-zbarcode扩展
写之前先鄙视下利用此开源程序收费的人。
PHP-zbarcode是php识别二维码的扩展。
下面是安装方法,安装前要先安装ImageMagick、zbar.
php-zbarcode 下载地址
安装ImageMagick:
yum install ImageMagick.x86_64 ImageMagick-devel.x86_64
wget http://jaist.dl.sourceforge.NET/project/zbar/zbar/0.10/zbar-0.10.tar.bz2
tar jxvf zbar-0.10.tar.bz2
cd zbar-0.10
./configure –without-gtk –without-qt –without-Python –prefix=/usr/local/zbar
make all
make install
echo “/usr/local/zbar/lib/” >> /etc/ld.so.conf
ldconfig
ln -s /usr/local/zbar/lib/pkgconfig/zbar.pc /usr/lib64/pkgconfig/zbar.pc
wget https://github.com/lgchgt/php-zbarcode/archive/master.zip
unzip master
cd php-zbarcode-master
/xxx/server/php/bin/phpze
/configure –with-php-config=/xxx/server/php/bin/php-config
make
make install
ll /xxx/server/php/lib/php/extensions/no-debug-non-zts-20100525/
添加:extension=zbarcode.so 到php.ini配置文件
运行 : php -i|grep zbar
检查是否安装功能
<?php
/* Create new image object */
$image = new ZBarCodeImage(“1.jpg”);
$scanner = new ZBarCodeScanner();
$barcode = $scanner->scan($image);
print_r($barcode);
/* Loop through possible barcodes */
if (!empty($barcode)) {
foreach ($barcode as $code) {
printf(“Found type %s barcode with data %s\n”, $code[‘type’], $code[‘data’]);
}
}
?>
最后验证结果即可;
5. android开发 如何实现扫描本地二维码图片
开源的二维码扫描库主要有zxing和zbar,zbar在iPos平台上应用比较成熟,而在Android平台上主流还是用zxing库,因此这里主要讲述如何利用zxing进行二维码开发。
如何将zxing的Android源码导入工程。
在导入zxing的android源码之前,先去官方下载zxing的源码http://code.google.com/p/zxing/downloads/list。
这里以1.6版本为例,zxing 1.6源码结构如下:
<?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.qrcode"
android:versionCode="1"
android:versionName="1.0">
<uses-sdkandroid:minSdkVersion="7"/>
<uses-permissionandroid:name="android.permission.VIBRATE"/><!--震动权限-->
<uses-permissionandroid:name="android.permission.CAMERA"/>
<uses-featureandroid:name="android.hardware.camera"/><!--使用照相机权限-->
<uses-featureandroid:name="android.hardware.camera.autofocus"/><!--自动聚焦权限-->
<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
<activityandroid:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!--隐藏键盘--><!--全屏-->
<activity
android:configChanges="orientation|keyboardHidden"
android:name="com.zxing.activity.CaptureActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden">
</activity>
</application>
</manifest>
这种情况大致就可以实现二维码扫描了,想细化的话,还可以多看看安卓二维码扫描开发相关的教程
6. 为什么VS2013生成的项目里面没有zbar文件夹
先随意修改视图——窗口——重置窗口布局,然后关闭重启VS2013,就好了,亲自试验可行
7. 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
8. 最近使用ZBarSDK开发的APP审核被拒绝,ZBarSDK不能用了吗
老版本不支持64位的 下载个最新版本 替换就行了
9. 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:^{}];
}
}