當前位置:首頁 » 操作系統 » 二維碼c源碼

二維碼c源碼

發布時間: 2022-08-10 11:14:29

1. 如何用C語言實現顯示二維碼

intFb_QrDisp(intiPenX,intiPenY,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->aucPixelDatasmallocfailed ");
return-1;
}

PicZoom(&g_tOriginPixelDatas,&g_tZoomPixelDatas);
#if0
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);
return0;
}

需要使用Qrcode

2. 誰有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

3. 誰有C語言或C++編寫的二維碼解碼軟體的源程序

這個程序是運行在什麼平台的?
二維碼的輸入來自攝像頭還是來自圖片?

目前來看,網上有一些開源的跨平台的開發包,需要安裝相應的庫才能使用。不可能像你想像的那麼簡單給你發個源代碼你就立刻能用了。

比較實用的一個開發包是Zbar,開源不收費。親測在Win7,WinXP環境下可以成功編譯運行。
http://zbar.sourceforge.net
去這里下載他的SDK,裡面有相應的常式,根據你的具體運行環境和具體的需要來修改吧。
祝你好運

4. 如何用C語言實現顯示二維碼

下一個easyx圖形函數庫吧,自動安裝的,帶chm函數說明。

5. 如何用C代碼生成二維碼

自己用C/C++生成二維碼是比較復雜的。
如果實在需要,也有時間,不妨看看開源的
ZXing
裡面有生成二維碼的演算法
其中有C/C++的移植
如果是商業需要,而又沒有時間去研究,不妨采購商用的二維碼生成SDK
網路一下有很多。

6. C#生成二維碼(QR碼)

C# 二維碼的代碼:

using Spire.Barcode;

using System.Drawing;

namespace CreateQRCode

{

class Program

{

static void Main(string[] args)

{

//創建BarcodeSettings對象

BarcodeSettings settings = new BarcodeSettings();

//應用Key,去logo

BarcodeSettings.ApplyKey("4KRJD-1K294-JJG9Z-SNR36-3P7IU");

settings.Type = BarCodeType.QRCode;//設置條碼類型為二維碼

settings.Data = "123456789";//設置二維碼數據

settings.Data2D = "123456789";//設置顯示文本

settings.ShowText = false;//設置二維碼數據文本不顯示

/*settings.ShowText = true;//顯示數據文本

settings.ShowTextOnBottom = true;//數據文本顯示在二維碼底部*/

settings.QRCodeDataMode = QRCodeDataMode.Numeric;//設置數據類型為數字

settings.QRCodeECL = QRCodeECL.H;//設置二維碼錯誤修正級別

settings.X = 3.0f;//設置寬度

BarCodeGenerator generator = new BarCodeGenerator(settings);//實例化BarCodeGenerator類的對象

//生成二維碼圖片並保存為PNG格式

Image image = generator.GenerateImage();

image.Save("QRCode.png");

}

}

}

這里的實現方法藉助專門的barcode生成根據spire.barcode for .net提供的類以及方法,解析二維碼可以參考如下代碼:

using System;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using Spire.Barcode;

namespace ScanBarcode{
public partial class Form1 : Form {
public Form1()
{
InitializeComponent();
}

private void btnLoadImage_Click(object sender, EventArgs e)
{
//載入條形碼圖片
Image image = Image.FromFile("Code128.png");
pictureBox1.Image = image;
}

private void btnReadData_Click(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(pictureBox1.Image);

//識別條形碼圖片中的數據(BarcodeScanner類包含多個Scan重載方法,可根據自己的需求選擇相應的方法)
string[] data = BarcodeScanner.Scan(bitmap, BarCodeType.Code128);

for (int i = 0; i < data.Length; i++)
{
this.textBox1.Text += data[i].ToString();
}
}
}

}


—End—

7. 二維碼生成程序C語言源代碼

1、二維碼有很多種標准,可以控制存儲數據的信息量,也可以控制容錯的數據量[使得部分污損的二維碼可以被正常讀齲通常的做法是調用二維碼設計方提供的組件,如果是自己生成二維碼,應該可以生成可以看起來很像的東西。

8. 求二維碼的生成演算法 C語言

二維碼有很多種標准,可以控制存儲數據的信息量,也可以控制容錯的數據量[使得部分污損的二維碼可以被正常讀取]

通常的做法是調用二維碼設計方提供的組件,像你這個准備自己生成二維碼,應該可以生成可以看起來很像的東西。

但是估計其餘的讀碼工具都讀取不出來。

9. 求二維碼生成的源代碼,最好是C++的開發環境的或者有介面也行。。。急求。。謝謝

希望我的回答對你有幫助,掃一下。

10. c#實現二維碼編碼過程

C# 生成二維碼
在C#中直接引用ThoughtWorks.QRCode.dll 類,

ThoughtWorks.QRCode.Codec.QRCodeEncoder encoder = new QRCodeEncoder();
encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//編碼方式(注意:BYTE能支持中文,ALPHA_NUMERIC掃描出來的都是數字)
encoder.QRCodeScale = 4;//大小(值越大生成的二維碼圖片像素越高)
encoder.QRCodeVersion = 0;//版本(注意:設置為0主要是防止編碼的字元串太長時發生錯誤)
encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//錯誤效驗、錯誤更正(有4個等級)
String qrdata = "二維碼信息";
System.Drawing.Bitmap bp = encoder.Encode(qrdata.ToString(), Encoding.GetEncoding("GB2312"));
Image image = bp;
pictureBox1.Image = bp;
保存二維碼圖片:
SaveFileDialog sf = new SaveFileDialog();
sf.Title = "選擇保存文件位置";
sf.Filter = "保存圖片(*.jpg) |*.jpg|所有文件(*.*) |*.*";
//設置默認文件類型顯示順序
sf.FilterIndex = 1;
//保存對話框是否記憶上次打開的目錄
sf.RestoreDirectory = true;
if (sf.ShowDialog() == DialogResult.OK)
{
Image im = this.pictureBox1.Image;
//獲得文件路徑
string localFilePath = sf.FileName.ToString();
if (sf.FileName != "")
{
string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1);//獲取文件名,不帶路徑
// newFileName = fileNameExt+DateTime.Now.ToString("yyyyMMdd") ;//給文件名後加上時間
string FilePath = localFilePath.Substring(0, localFilePath.LastIndexOf(".")); //獲取文件路徑,帶文件名,不帶後綴
string fn = sf.FileName;
pictureBox1.Image.Save(FilePath +"-"+ DateTime.Now.ToString("yyyyMMdd") + ".jpg");

}
}
//解析二維碼信息
// QRCodeDecoder decoder = new QRCodeDecoder();
// String decodedString = decoder.decode(new QRCodeBitmapImage(new Bitmap(pictureBox1.Image)));
//this.label3.Text = decodedString;

2、另一種方法,引用ZXing類庫。
ZXing是一個開源Java類庫用於解析多種格式的1D/2D條形碼。目標是能夠對QR編碼、Data Matrix、UPC的1D條形碼進行解碼。於此同時,它同樣提供 cpp,ActionScript,android,iPhone,rim,j2me,j2se,jruby,C#等方式的類庫。zxing類庫的作用主 要是解碼,是目前開源類庫中解碼能力比較強的(商業的另說,不過對於動輒成千上萬的類庫授權費用,的確很值)。

到谷歌code下載相應的代碼
1.下載zxing最新的包
到zxing的主頁: http://code.google.com/p/zxing/
找到其中的CSharp文件夾,在vs中打開並編譯,將obj下debug中的zxing.dll復制並粘帖到你的項目中的bin文件目錄下,

右擊添加項目引用。將zxing.dll引用到項目中,就可以在需要的地方使用了。
源代碼中有兩處UTF-8的問題,會導致中文出現亂碼(編譯.dll之前修改)
其一:com.google.zxing.qrcode.encoder.encoder類中的
internal const System.String DEFAULT_BYTE_MODE_ENCODING = "ISO-8859-1";
此處,將ISO-8859-1改為UTF-8
其二:com.google.zxing.qrcode.decoder.DecodedBitStreamParser類的成員
private const System.String UTF8 = "UTF8";
應將UTF8改為UTF-8

生成代碼:
//引用
using com.google.zxing.qrcode;
using com.google.zxing;
using com.google.zxing.common;
using ByteMatrix = com.google.zxing.common.ByteMatrix;
using EAN13Writer = com.google.zxing.oned.EAN13Writer;
using EAN8Writer = com.google.zxing.oned.EAN8Writer;
using MultiFormatWriter = com.google.zxing.MultiFormatWriter;
方法:
string content = "二維碼信息";
ByteMatrix byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 300, 300);
Bitmap bitmap = toBitmap(byteMatrix);
pictureBox1.Image = bitmap;
SaveFileDialog sFD = new SaveFileDialog();
sFD.Filter = "保存圖片(*.png) |*.png|所有文件(*.*) |*.*";
sFD.DefaultExt = "*.png|*.png";
sFD.AddExtension = true;
if (sFD.ShowDialog() == DialogResult.OK)
{
if (sFD.FileName != "")
{
writeToFile(byteMatrix, System.Drawing.Imaging.ImageFormat.Png, sFD.FileName);
}

}
解析:
if (this.openFileDialog1.ShowDialog() != DialogResult.OK)
{
return;
}
Image img = Image.FromFile(this.openFileDialog1.FileName);
Bitmap bmap;
try
{
bmap = new Bitmap(img);
}
catch (System.IO.IOException ioe)
{
MessageBox.Show(ioe.ToString());
return;
}
if (bmap == null)
{
MessageBox.Show("Could not decode image");
return;
}
LuminanceSource source = new RGBLuminanceSource(bmap, bmap.Width, bmap.Height);
com.google.zxing.BinaryBitmap bitmap1 = new com.google.zxing.BinaryBitmap(new HybridBinarizer(source));
Result result;
try
{
result = new MultiFormatReader().decode(bitmap1);
}
catch (ReaderException re)
{
MessageBox.Show(re.ToString());
return;
}

MessageBox.Show(result.Text);

public static void writeToFile(ByteMatrix matrix, System.Drawing.Imaging.ImageFormat format, string file)
{
Bitmap bmap = toBitmap(matrix);
bmap.Save(file, format);
}

public static Bitmap toBitmap(ByteMatrix matrix)
{
int width = matrix.Width;
int height = matrix.Height;
Bitmap bmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
bmap.SetPixel(x, y, matrix.get_Renamed(x, y) != -1 ? ColorTranslator.FromHtml("0xFF000000") : ColorTranslator.FromHtml("0xFFFFFFFF"));
}
}
return bmap;
}

熱點內容
在系統編程 發布:2024-04-19 08:54:55 瀏覽:234
visualstudio反編譯 發布:2024-04-19 08:44:46 瀏覽:319
ise怎麼配置晶元 發布:2024-04-19 08:27:31 瀏覽:997
免費搭建在線查詢伺服器 發布:2024-04-19 08:17:28 瀏覽:46
vs資料庫實例 發布:2024-04-19 08:14:54 瀏覽:295
vfp9反編譯 發布:2024-04-19 08:11:31 瀏覽:381
火車軟卧無線密碼是多少 發布:2024-04-19 07:38:59 瀏覽:423
vb系統文件夾 發布:2024-04-19 07:29:58 瀏覽:740
qt怎麼添加文件夾 發布:2024-04-19 07:22:53 瀏覽:256
sql查詢表是否存在 發布:2024-04-19 06:11:48 瀏覽:623