C# 製作 二維碼/條形碼
方法一: 使用zxing.dll製作二維碼和條形碼,下載zxing.dll 檔案後,專案 -- 引用 右鍵新增
C#Code ZXing.cs檔案
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing; using System.IO; using System.Drawing.Imaging; 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; namespace MakeBarCode { public class ZXing { #region 生成二維碼 /// <summary> /// 生成二維碼 /// </summary> /// <param name="data">新增需要生成二維碼的字元資訊</param> /// <returns></returns> public static Bitmap CreateTwoBarCode(string data) { ByteMatrix byteMatrix = new MultiFormatWriter().encode(data, BarcodeFormat.QR_CODE, 200, 200); return toBitmap(byteMatrix); } public static void SaveToFile(ByteMatrix matrix, System.Drawing.Imaging.ImageFormat format, string file) { Bitmap bmap = toBitmap(matrix); Bitmap b = new Bitmap(bmap.Width, bmap.Height); Bitmap logo = null; logo = new Bitmap("1.bmp"); Graphics g = Graphics.FromImage(b); g.DrawImage(bmap, 0, 0); g.DrawImage(logo,10,10); b.Save("BarCodeImage11.jpg"); if (logo == null) { MessageBox.Show("1111"); } 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; } #endregion #region 生成條形碼 /// <summary> /// 生成條形碼 /// </summary> /// <param name="text">數字</param> /// <param name="w">條碼寬度,建議使用 150</param> /// <param name="h">條碼高度,建議使用 100</param> /// <returns></returns> public static Bitmap CreateOneBarCode(string text) {// 只能是8個數字字串 MultiFormatWriter mutiWriter = new com.google.zxing.MultiFormatWriter(); ByteMatrix bm = mutiWriter.encode(text, com.google.zxing.BarcodeFormat.EAN_8, 150, 100); return bm.ToBitmap(); } #endregion #region 條形碼 , 二維碼解碼 /// <summary> /// 條形碼 , 二維碼解碼 /// </summary> /// <param name="img"></param> /// <returns></returns> public static string Decoder(Image img) { 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 bitmap = new com.google.zxing.BinaryBitmap(new com.google.zxing.common.HybridBinarizer(source)); Result result; try { result = new MultiFormatReader().decode(bitmap); } catch (ReaderException re) { //MessageBox.Show("不是有效二維碼圖片"); // 使用解條形碼的方法 MultiFormatReader mutiReader = new MultiFormatReader(); LuminanceSource ls = new RGBLuminanceSource(bmap, bmap.Width, bmap.Height); BinaryBitmap bb = new BinaryBitmap(new com.google.zxing.common.HybridBinarizer(ls)); Result r = mutiReader.decode(bb); return r.Text; } return result.Text; } #endregion #region 二維碼新增logo /// <summary> /// 二維碼新增logo /// </summary> /// <param name="sourceMap">二維碼圖</param> /// <param name="logoFilePath">logo圖片路徑, logo不宜過大,建議 20x20 以內大小</param> /// <returns></returns> public static Bitmap AddLogo(Bitmap sourceMap,string logoFilePath) { Graphics gra = Graphics.FromImage(sourceMap); Image logo = Image.FromFile(logoFilePath); if(logo.Width > 20 || logo.Height >20) { MessageBox.Show("新增失敗:建議logo圖片的大小為 20x20 以內"); return sourceMap; } gra.DrawImage(logo, (sourceMap.Width - logo.Width) / 2, (sourceMap.Height - logo.Height) / 2); return sourceMap; } #endregion } }
方法二: 使用ThoughtWorks.QRCode.dll製作條形碼, 下載ThoughtWorks.QRCode.dll 檔案後,專案 -- 引用 右鍵新增
C#Code BarCode.cs檔案
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.Windows.Forms; using ThoughtWorks.QRCode; using ThoughtWorks.QRCode.Codec; using ThoughtWorks.QRCode.Codec.Data; using ThoughtWorks.QRCode.Codec.Util; namespace MakeScanCode { /// <summary> /// 生成條形碼( 128條碼,標準參考:GB/T 18347-2001 ) /// BY JUNSON 20090508 /// </summary> public class BarCode { /// <summary> /// 條形碼生成函式 /// </summary> /// <param name="text">條型碼字串</param> /// <returns></returns> public static Bitmap CreateOneBarCode(string text) { //查檢是否合條件TEXT bool ck = CheckErrerCode(text); if (!ck) { MessageBox.Show("條形碼字元不合要求,不能是存在漢字或全形字元"); return null; } string barstring = BuildBarString(text); return KiCode128C(barstring, 30); } /// <summary> /// 建立條碼字串 /// </summary> /// <param name="tex">條碼內容</param> /// <returns></returns> private static string BuildBarString(string tex) { string barstart = "bbsbssbssss"; //碼頭 string barbody = ""; //碼身 string barcheck = ""; //碼檢 string barend = "bbsssbbbsbsbb"; //碼尾 int checkNum = 104; //迴圈新增碼身,計算碼檢 for (int i = 1; i <= tex.Length; i++) { int index = (int)tex[i - 1] - 32; checkNum += (index * i); barbody += AddSimpleTag(index);//加入字元值的條碼標記 } //碼檢值計算 barcheck = AddSimpleTag(int.Parse(Convert.ToDouble(checkNum % 103).ToString("0"))); string barstring = barstart + barbody + barcheck + barend; return barstring; } //增加一個條碼標記 private static string AddSimpleTag(int CodeIndex) { string res = ""; /// <summary>1-4的條的字元標識 </summary> string[] TagB = { "", "b", "bb", "bbb", "bbbb" }; /// <summary>1-4的空的字元標識 </summary> string[] TagS = { "", "s", "ss", "sss", "ssss" }; string[] Code128List = new string[] { "212222","222122","222221","121223","121322","131222","122213","122312","132212","221213", "221312","231212","112232","122132","122231","113222","123122","123221","223211","221132", "221231","213212","223112","312131","311222","321122","321221","312212","322112","322211", "212123","212321","232121","111323","131123","131321","112313","132113","132311","211313", "231113","231311","112133","112331","132131","113123","113321","133121","313121","211331", "231131","213113","213311","213131","311123","311321","331121","312113","312311","332111", "314111","221411","431111","111224","111422","121124","121421","141122","141221","112214", "112412","122114","122411","142112","142211","241211","221114","413111","241112","134111", "111242","121142","121241","114212","124112","124211","411212","421112","421211","212141", "214121","412121","111143","111341","131141","114113","114311","411113","411311","113141", "114131","311141","411131","211412","211214","211232" }; string tag = Code128List[CodeIndex]; for (int i = 0; i < tag.Length; i++) { string temp = ""; int num = int.Parse(tag[i].ToString()); if (i % 2 == 0) { temp = TagB[num]; } else { temp = TagS[num]; } res += temp; } return res; } /// <summary> /// 檢查條形碼文字是否合條件(不能是漢字或全形字元) /// </summary> /// <param name="cktext"></param> /// <returns></returns> private static bool CheckErrerCode(string cktext) { foreach (char c in cktext) { byte[] tmp = System.Text.UnicodeEncoding.Default.GetBytes(c.ToString()); if (tmp.Length > 1) return false; } return true; } /// <summary>生成條碼 </summary> /// <param name="BarString">條碼模式字串</param> //Format32bppArgb /// <param name="Height">生成的條碼高度</param> /// <returns>條碼圖形</returns> private static Bitmap KiCode128C(string BarString, int _Height) { Bitmap b = new Bitmap(BarString.Length, _Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); //using (Graphics grp = Graphics.FromImage(b)) //{ try { char[] cs = BarString.ToCharArray(); for (int i = 0; i < cs.Length; i++) { for (int j = 0; j < _Height; j++) { if (cs[i] == 'b') { b.SetPixel(i, j,System.Drawing.Color.Black); } else { b.SetPixel(i, j,System.Drawing.Color.White); } } } //grp.DrawString(text, SystemFonts.CaptionFont, Brushes.Black, new PointF(leftEmpty, b.Height - botEmpty)); return b; } catch { return null; } //} } } }
總結:
相關推薦
C# 製作 二維碼/條形碼
方法一: 使用zxing.dll製作二維碼和條形碼,下載zxing.dll 檔案後,專案 -- 引用 右鍵新增 C#Code ZXing.cs檔案 using System; using System.Collections.Generic; using Syste
Excel製作二維碼、條形碼?你肯定沒見過
如題,今天教大家用Excel製作二維碼、條形碼,相信很多人疑問,怎麼做到?其實很簡單,一起來學習一下吧。 二維碼效果圖: 具體操作步驟: 1. 開啟Excel表格——【開發工具】——【插入】——【其他控制元件】,在其他控制元件中選擇【Microsoft Bar
Python製作二維碼和條形碼掃描器 (pyzbar)
條碼在生活中隨處可見,其可分為三類:一維條碼、二維條碼、三維條碼 一維條碼: 我們平時習慣稱為條形碼。條形碼是將寬度不等的多個黑條和空白,按照一定的編碼規則排列,用以表達一組資訊的圖形識別符號。常見的條形碼是由反射率相差很大的黑條(簡稱條)和白條(簡稱
c#生成二維碼,一維碼(條形碼)
傳統 lin family 底部 之一 提供商 tex 圖像 字節 一、一維碼 1.一維條碼即指條碼條和空的排列規則,常用的一維碼的碼制包括:EAN碼、39碼、交叉25碼、UPC碼、128碼、93碼,ISBN碼,及Codabar(庫德巴碼)等。 2.一維
ASP.NET中C#生成二維碼
保存 mss 軟件 clear 所有 str drawing for visual ASP.NET中用C#語言編寫網頁,將自己輸入的文字生成二維碼。 工具/原料 已安裝好VS2010或其他版本VS軟件的電腦一臺 1、新建 1
C#生成二維碼
-1 odi null erro img turn bitmap codec encode http://www.cnblogs.com/jys509/p/4592539.html C# 中使用 ThoughtWorks.QRCode.dll 生成指定尺寸和邊框寬度的二維碼
c++生成二維碼
int ostream names 好的 iyu gif free namespace tail vs2010編譯好的qrencode庫:http://files.cnblogs.com/files/verstin/qrencode.rar 版本是3.4.4 編譯方法參
C#生成二維碼,裁切邊框
google tasks html fff white zxing ace sta wim 使用google zxing生成的二維碼帶有白色邊框,顯示在報告(使用Crystal Report 水晶報表)上時,由於空間有限造成二維碼過小難以掃描識別。 通過將白色邊框裁切掉,
C# QR二維碼DEMO
decode cor tree ref C# 編碼 work TP 第三方類 C# QR二維碼DEMO QR二維碼 二維碼的一種 相關技術 ThoughtWorks.QRCode 第三方類庫 DEMO功能 Encode 生成二維碼圖片 Encoding 編碼 Corr
如何用 Excel 製作二維碼
一、在A1單元格輸入你需要製作的內容(如一個網址),點選開發工具—>插入----->其他控制元件 二、下拉找到Microsoft BarCode Control 16.0 選項---->點選確定---->然後在空白區域拉動滑鼠箭頭---
使用PHP製作二維碼
<?php /** Created by PhpStorm. User: 張海強 Date: 2018/11/9 Time: 20:34 */ //引入核心庫檔案 include "phpqrcode/phpqrcode.php"; //定義糾錯級別 $errorLevel
Android 基於google Zxing實現二維碼 條形碼掃描,仿微信二維碼掃描效果
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
超簡單ZXing掃描二維碼條形碼
首先在build.gradle寫上方法 repositories { mavenCentral() maven { url "http://dl.bintray.com/journeyapps/maven" } } 然後還是在這個檔案內加上依賴 implemen
iOS 掃描二維碼/條形碼
級別:★★☆☆☆ 標籤:「iOS 原生掃描」「AVCaptureSession」「AVCaptureDevice」「rectOfInterest」 作者: Xs·H 審校: QiShare團隊 最近做IoT專案,在智慧裝置配網過程中有一個掃描裝置或說明書上的二維碼/條形碼來讀取裝置資
java用谷歌的zxing包製作二維碼
1.pom.xml匯入zxing依賴 <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId>
STM32F103 + LCD屏製作二維碼
2、解壓後得到,如下檔案 3、檔案很多,只需要提取庫檔案就可以了,下圖三個檔案 4、新增到工程上編輯後會報錯 如下 需要在qr_encode.h中新增標頭檔案,如下圖 再次編譯--通過 5、建立兩個處理二維碼顯示的檔案QRcode_main.c
Android Zxing實現掃描二維碼條形碼功能仿微信整合閃光燈生成二維碼
最近在做android專案需要用到二維碼條形碼掃描功能,我用的是Eclipse網上原始碼大多是GitHup上的Android studio版本的所以我改了一版整合到專案中去。 效果圖: 左邊版本的掃碼框是自定義的。右邊版本的掃碼框和掃描線是圖片因為太醜所以最終換成左邊
如何製作二維碼並新增到PDF檔案中
在我們日常生活中,二維碼彷彿無處不在,關注公眾號掃一掃、新增好友掃一掃、上街購物掃一掃,既然二維碼的應用如此的廣泛,你知道二維碼是如何製作的嗎?今天,小編不光給你介紹二維碼製作的方法,還順便告訴你如何把它新增到PDF檔案中去。怎麼樣,是不是超想學會呢?想學那就繼
iOS 生成二維碼/條形碼
級別:★★☆☆☆ 標籤:「iOS CIFilter」「CIQRCodeGenerator」「CICode128BarcodeGenerator」「二維碼加logo」 作者: Xs·H 審校: QiShare團隊 接上文iOS 掃描二維碼/條形碼 及 iOS 掃描相簿圖片二維碼,本文介
關於製作二維碼和掃一掃功能的實現
package com.example.project; import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.pm.P