当前位置:首页 » 操作系统 » 二维码源码

二维码源码

发布时间: 2022-01-24 00:22:32

A. Android二维码识别源码,可有多种实现方式

这里简单介绍一下ZXing库。ZXing是一个开放源码的,用java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。该项目可实现的条形码编码和解码。目前支持以下格式:UPC-A,UPC-E、EAN-8,EAN-13、39码、93码。ZXing是个很经典的条码/二维码识别的开源类库,以前在功能机上,就有开发者使用J2ME运用ZXing了,不过要支持JSR-234规范(自动对焦)的手机才能发挥其威力。
下面是ZXing的demo运行,我这里创建了一个二维码,内容是我博客的网址,大伙可以用微信的扫一扫功能,试一下。就可以直接打开我博客。

2、ZXing库主要类
下面给大家介绍一下,ZXing库里面主要的类以及这些类的作用:
CaptureActivity。这个是启动Activity 也就是扫描器。
CaptureActivityHandler 解码处理类,负责调用另外的线程进行解码。
DecodeThread 解码的线程。
com.google.zxing.client.android.camera 包,摄像头控制包。
ViewfinderView 自定义的View,就是我们看见的拍摄时中间的框框了。

3、使用ZXing生成二维码
下面针对二维码生成和解析做个简单介绍,至于详细的使用方法,建议大家还是自己看看源码,使用起来很简单,不过这个开源项目的代码,值得好好看看。首先给出二维码生成的方法:
View Code
上面就是二维码生成的方法接口,如果你只是使用者方法,很简单,只要传入一个URL即可,就像我截图里面一样,传入一个合法的网址即可。或者像现在一些移动APP的推广,把APP下载地址转为二维码,只要扫一下就可以下载相应的APP。这个也是目前比较流行的APP的推广方式。
上面代码做的事情不多,主要是调用ZXing库里面QRCodeWriter().encode的方法对我们传进去的URL进行编码,具体如何编码,这个我这里就不详细说,有兴趣可以看ZXing的源码。文章最后会给出ZXing的源码和例子代码。

4、扫描二维码获取信息
扫描获取二维码信息的工作稍微复杂一些,主要是需要编写Camera的使用,这个跟我们一般使用Camera一样,需要使用Surfaceview作为预览,这一部我这里就不说了,这个应该不是太复杂。对于使用过Camera做预览的朋友,应该是挺简单的事情。获取二维码数据的关键处理是在Camera的自动对焦回调函数哪里,调用ZXing的解码接口。
View Code
这里稍微多说一句,由于解码需要一定时间,所以ZXing的解码调用,都是使用了Handler作为线程通信机制,解码的工作都是放在独立线程里面使用的,如果你直接在主线程解码,恐怕ANR问题是避免不了。
View Code
上面是解码的线程处理不同状态的时候需要注意的地方,我们这里只看获取图像成功的地方,成功获取图片解码的实在DecodeThread里面实现,DecodeThread里面解码成功后,会把数据序列化,然后保存到Bundle里面,我们可以直接通过Bundle的序列化,获取到图片数据。同时会把解码后的结果保存到MSG里面,然后就可以根据实际情况进行处理,例如上面代码,解码成功后,会调用一个处理函数:
View Code
上面就是整个二维码的解码流程,里面因为涉及很多Camera的使用,所以你如果需要使用二维码识别,需要注意一下你的程序需要申请下面的权限,一般的Camera使用以及Camera的自动对焦等。
View Code
5、结语
上面就是生成和识别二维码的关键流程和代码,有兴趣的朋友可以自己查看ZXing的源码,里面有很多图像分析的知识可以学习。具体使用也可以参考我下面给出的Demo。二维码对于现在移动开发来说很是很常用的技术,所以有空可以了解一下,说不定什么时候就用上了。另外,ZXing库除了二维码外,其实对于条形码也是支持的,只是我这里没有介绍。有需要的自己去看看源码即可。
转载

B. 谁有二维码生成的源代码,php版的

这个上github一搜一大把,给你个链接:
https://github.com/endroid/QrCode

C. C语言或C++编写二维码的解码部分详细的源代码及说明

1、二维码有很多种标准,可以控制存储数据的信息量,也可以控制容错的数据量[使得部分污损的二维码可以被正常读取。通常的做法是调用二维码设计方提供的组件,如果是自己生成二维码,应该可以生成可以看起来很像的东西。

2、例程:

<pre name="code" class="cpp">int Fb_QrDisp(int iPenX,int iPenY,QRcode*pQRcode)

{

T_PixelDatasg_tOriginPixelDatas;

T_PixelDatasg_tZoomPixelDatas;

//intiZoom;

inti;

g_tOriginPixelDatas.iWidth= pQRcode->width;

g_tOriginPixelDatas.iHeight=pQRcode->width;

g_tOriginPixelDatas.iLineBytes=g_tOriginPixelDatas.iWidth;

g_tOriginPixelDatas.aucPixelDatas= pQRcode->data;

/*

if(pQRcode->version< = 1)

{

iZoom= 2;

}

else

{

iZoom= 2;

}

g_tZoomPixelDatas.iWidth = pQRcode->width*iZoom;

g_tZoomPixelDatas.iHeight=pQRcode->width*iZoom;

g_tZoomPixelDatas.iLineBytes=g_tZoomPixelDatas.iWidth;

g_tZoomPixelDatas.aucPixelDatas= malloc(g_tZoomPixelDatas.iWidth* g_tZoomPixelDatas.iHeight);

if(g_tZoomPixelDatas.aucPixelDatas== NULL)

{

printf("g_tZoomPixelDatas->aucPixelDatasmalloc failed ");

return-1;

}

PicZoom(&g_tOriginPixelDatas,&g_tZoomPixelDatas);

#if 0

printf("g_tZoomPixelDatas.iWidth=%d,g_tZoomPixelDatas.iHeight=%d ", g_tZoomPixelDatas.iWidth,g_tZoomPixelDatas.iHeight);

for(i=0;i<(g_tZoomPixelDatas.iWidth*g_tZoomPixelDatas.iHeight);i++)

{

printf("0x%x,",g_tZoomPixelDatas.aucPixelDatas[i]);

}

printf(" ");

#endif

*/

Disp_FixelPic(iPenX,iPenY,&g_tZoomPixelDatas);

return 0;

}

因为stmf429运行起来后内存不够,这里不用申请内存再扩充放大二维码数据的方法,而是直接描点。所以这里注释掉了放大部分。

D. 谁有C语言编写的二维码的源代码

int strcpy(char *s1,const char *s2);
开辟一个缓冲区,比如
char buff[100];//假设你的字符串不超过这么多

而你的而为数组为
char **argv;
其中argv[0] = "this is the first string";
argv[1] = "this is the seconde string";

你只须调用如下
strcpy(buff,argv[0]);
strcpy(argv[0],argv[1]);
strcpy(argv[1],buff);

一下是完整代码,并测试过
#include <stdio.h>
#include <string.h>

char argv[2][100]=;
// 存储字符串的二维数组,每个字符串最长为99个字节
char buff[100];
//缓冲区
int main()
{
printf("转换前:\n");
printf("argv[0] = %s\n",argv[0]);
printf("argv[1] = %s\n",argv[1]);

strcpy(buff,argv[0]);
strcpy(argv[0],argv[1]);
strcpy(argv[1],buff);

printf("转换后:\n");
printf("argv[0] = %s\n",argv[0]);
printf("argv[1] = %s\n",argv[1]);

return 0;
}
vae.la

E. 谁有二维码生成的源代码(java版本)的,能提供些吗

可以考虑使用图形绘制来解决二维码的生成问题,使用实例如下:

生成二维码
packagenet.qrcode;

importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;
importjava.io.OutputStream;

importjavax.imageio.ImageIO;

importcom.google.zxing.common.BitMatrix;

{

//私有不可更改的变量:生成二维码图片的颜色
privatestaticfinalintBLACK=0xFF000000;
privatestaticfinalintWHITE=0xFFFFFFFF;
//空的构造方法
publicMartixToImageWriter(){
//TODOAuto-generatedconstructorstub
}
/**
*静态方法
*BufferedImage是Image的一个子类,BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,
*通常用来做图片修改操作如大小变换、图片变灰、设置图片透明或不透明等。
*@parammatrix编码形式
*@return
*/
(BitMatrixmatrix)
{
//图片的宽度和高度
intwidth=matrix.getWidth();
intheight=matrix.getHeight();
//BufferedImage.TYPE_INT_RGB将图片变为什么颜色
BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
for(intx=0;x<width;x++)
{
for(inty=0;y<height;y++)
{
image.setRGB(x,y,matrix.get(x,y)?BLACK:WHITE);
}
}
returnimage;
}
/**
*静态方法用于生成图片
*@parammatrix编码形式
*@paramformat图片类型
*@paramfile文件(图片路径,图片名称)
*@throwsIOException
*/
publicstaticvoidwriteToFile(BitMatrixmatrix,Stringformat,Filefile)throwsIOException
{
BufferedImageimage=toBufferedImage(matrix);
if(!ImageIO.write(image,format,file))
{
thrownewIOException("Couldnotwriteanimageofformat"+format+"to"+file);
}
}
/**
*输出
*@parammatrix
*@paramformat
*@paramstream
*@throwsIOException
*/
publicstaticvoidwriteToStream(BitMatrixmatrix,Stringformat,OutputStreamstream)throwsIOException
{
BufferedImageimage=toBufferedImage(matrix);
if(!ImageIO.write(image,format,stream))
{
thrownewIOException("Couldnotwriteanimageofformat"+format);
}
}
}

测试二维码是否生成成功
packagenet.qrcode;

importjava.io.File;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;

importcom.google.zxing.BarcodeFormat;
importcom.google.zxing.EncodeHintType;
importcom.google.zxing.MultiFormatWriter;
importcom.google.zxing.common.BitMatrix;

publicclassTwoDimensionCode{

publicstaticvoidmain(String[]args){
try
{
System.out.println("请输入您要生成二维码的信息");
Scannerinput=newScanner(System.in);
Stringcontent=input.next();
Stringpath="C:\Users\Administrator\Desktop\二维码图片库";
=newMultiFormatWriter();
Maphints=newHashMap();
hints.put(EncodeHintType.CHARACTER_SET,"UTF-8");
//按照指定的宽度,高度和附加参数对字符串进行编码
//生成二维码
BitMatrixbitMatrix=multiFormatWrite.encode(content,BarcodeFormat.QR_CODE,400,400,hints);
Filefile1=newFile(path,userId+".jpg");
//写入文件
MartixToImageWriter.writeToFile(bitMatrix,"jpg",file1);
System.out.println("二维码图片生成成功!");
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}

F. 谁有C语言或C++编写的二维码解码软件的源程序

这个程序是运行在什么平台的?
二维码的输入来自摄像头还是来自图片?

目前来看,网上有一些开源的跨平台的开发包,需要安装相应的库才能使用。不可能像你想象的那么简单给你发个源代码你就立刻能用了。

比较实用的一个开发包是Zbar,开源不收费。亲测在Win7,WinXP环境下可以成功编译运行。
http://zbar.sourceforge.net
去这里下载他的SDK,里面有相应的例程,根据你的具体运行环境和具体的需要来修改吧。
祝你好运

G. 二维码源代码

QR码的话找那个开源的 zxing 项目啊
识别和生成都有了。有 Java 和 C++的

H. vfp怎样生成二维码的开源代码

环境:Visual Studio 2013
准备工作:引入一个dll——ThoughtWorks.QRCode
dll作用:封装成熟的二维码算法等(有包不用自己写的,我觉得都是大仙)
引入dll方法:
(1)打开“程序包管理控制台”(视图——其他窗口——程序包管理控制台)
(2)Install-Package -ProjectName 你的项目名称 ThoughtWorks.QRCode
(3)等待等待等待等待。。。。。。。然后装完。

生成二维码的核心代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//mapPath:网站根目录
//fileSaveFolder:相对路径
//link:链接或者文本
public static string
GenerateLinkQRCode
(string mapPath, string fileSaveFolder, string link)
{
QRCodeEncoder qr = new QRCodeEncoder()
{
//编码
QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE,
//二维码缩放
QRCodeScale = 4,
//数字越小,二维码密度越小,
//可容纳的文本越少
QRCodeVersion = 4,
//
QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M
};

//存放路径处理
if (!Directory.Exists(mapPath + fileSaveFolder))
{
Directory.CreateDirectory(mapPath + fileSaveFolder);
}

//给二维码图片取名字
//规则可任意修改
string fileName = "QRCode" +
DateTime.Now.ToString("yyyyMMddHHmmss") +
随机字符串 +
".png";

//存放二维码的绝对路径
string filePath = mapPath + fileSaveFolder + fileName;

//生成二维码图片放在内存中
Bitmap bitmap = qr.Encode(link);
//保存图片到服务器磁盘(本地保存)
Bitmap.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
//准备返回二维码图片相对路径
string result = fileSaveFolder + fileName;
result = "/" + result.Replace(@"\", "/");
//输出结果,就是二维码的路径
return result;
}
本回答由提问者推荐评论 0 0

J_oin
采纳率:42% 擅长: JavaScript C#/.NET 编程语言 Html/Css
其他回答
新建一个window应用程序,然后引入.NET二维码类库(开源的类库,可从网上下载):
核心代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WinQRCode

{

using ThoughtWorks.QRCode.Codec;

using ThoughtWorks.QRCode.Codec.Data;

using ThoughtWorks.QRCode.Codec.Util;

using System.IO;

using PdfToImage;

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

/// <summary>

/// 编码

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button1_Click(object sender, EventArgs e)

{

if (this.textBox1.Text != "")

{

Cursor.Current = Cursors.WaitCursor;

if (textBox1.Text.Trim() == String.Empty)

{

MessageBox.Show("不能为空.");

return;

}

QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();

qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;

qrCodeEncoder.QRCodeScale = 4;

qrCodeEncoder.QRCodeVersion = 7;

qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;

System.Drawing.Image image;

String data = textBox1.Text;

//编码

image = qrCodeEncoder.Encode(data);

//图片显示

this.pictureBox1.Image = image;

Cursor.Current = Cursors.Default;

}

}

/// <summary>

/// 解码

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button2_Click(object sender, EventArgs e)

{

Cursor.Current = Cursors.WaitCursor;

Bitmap b = this.pictureBox1.Image as Bitmap;

try

{

QRCodeDecoder decoder = new QRCodeDecoder();

//解码

String decodedString = decoder.decode(new QRCodeBitmapImage(b));

//显示解码信息

this.lbl解码信息.Text += decodedString ;

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

Cursor.Current = Cursors.Default;

}

private void Form1_Load(object sender, EventArgs e)

{

}

}

}

I. 二维码闭源和开源的区别

开源即开放源代码(Open source code)也称为源代码公开,指的是一种软件发布模式,讲源代码公开。闭源(Closed source)是作为开源的反义词而出现的一个术语,指被用于任何没有资格作为开源许可术语的程序。二维码开源和闭源的区别也是这样

J. 有谁知道二维码的生成原理,代码编写难吗

Android中使用ZXing识别条形码/二维码

JDK 中也能使用的

热点内容
实测华为编译器 发布:2024-09-19 23:50:52 浏览:821
linux汇总 发布:2024-09-19 23:46:39 浏览:452
阿里云服务器环境搭建教程 发布:2024-09-19 23:21:58 浏览:837
黄色文件夹图标 发布:2024-09-19 23:19:22 浏览:684
mysql数据库导出导入 发布:2024-09-19 23:00:47 浏览:183
lua脚本精灵 发布:2024-09-19 23:00:41 浏览:659
任务栏文件夹图标 发布:2024-09-19 22:54:25 浏览:101
解压来一波 发布:2024-09-19 22:46:36 浏览:933
mysqlpythonubuntu 发布:2024-09-19 22:46:27 浏览:501
服务器请求获取ip地址 发布:2024-09-19 22:33:25 浏览:515