turn from: http://www.mamicode.com/info-detail-350727.html . NET uses zxing.net to generate middle-band picture two-dimension time: 2014-12-04 00:59:31 reading: 101 Comments: 0 Favorites: 0 [Point my collection +]
A long time ago wrote such a code, but has not been recorded, accidentally wanted to write a blog.
Encapsulate the previous code into functions to facilitate understanding and invocation.
Based on the open source Zxing.net component, the code is as follows:
Add a reference to the Zxing.net first, and then add the appropriate namespaces:
Using System;
Using System.Collections.Generic;
Using System.Drawing;
Using Zxing;
Using Zxing.common;
Using Zxing.qrcode;
Using ZXing.QrCode.Internal;
Method one is to generate a two-dimensional code picture:
///<summary>///generate two-dimensional code picture///</summary>///<param name= "Contents" > to generate the information that the two-dimensional code contains </param>// /<param name= "width" > generated two-dimensional code width (default 300 pixels) </param>///<param name= "height" > generated two-dimensional code height (default 300 pixels) </ param>///<returns> Two-dimensional code picture </returns> public static Bitmap Generatorqrimage (string contents, int width = 300 , int height = +) {if (string).
IsNullOrEmpty (contents)) {return null;
//This article address: http://www.cnblogs.com/Interkey/p/qrcode.html encodingoptions options = null;
Barcodewriter writer = null; Options = new Qrcodeencodingoptions {Disableeci = true, CharacterSet = "UTF-8", Width = width
, height = height, errorcorrection = ErrorCorrectionLevel.H,};
writer = new Barcodewriter (); Writer.
Format = Barcodeformat.qr_code; Writer.
options = options; Bitmap Bitmap = writer.
Write (contents);
return bitmap; }
Method Two is to generate a two-dimensional code picture in the middle with pictures:
<summary>///generation of two-dimensional code picture with picture///</summary>///<param name= "Contents" > to generate the information that the two-dimensional code contains </param> <param name= "Middleimg" > to be generated into two-dimensional code in the middle of the picture </param>///<param name= "width" > generated two-dimensional code width (default 300 pixels) </ param>///<param name= "height" > generated two-dimensional code height (default 300 pixels) </param>///<returns> Two-dimensional code with pictures in the middle </returns > public static Bitmap generatorqrimage (string contents, Image middleimg, int width = +, int height = $) {if ( String.
IsNullOrEmpty (contents)) {return null;
} if (middleimg = = null) {//return null;
Return Generatorqrimage (contents); ////This article address: http://www.cnblogs.com/Interkey/p/qrcode.html//construction of two-dimensional code coder Multiformatwriter Mutiwriter = new Multifo
Rmatwriter ();
Dictionary<encodehinttype, object> hint = new Dictionary<encodehinttype, object> (); Hint.
ADD (Encodehinttype.character_set, "UTF-8"); Hint.
ADD (Encodehinttype.error_correction, ErrorCorrectionLevel.H); Generate two-dimensional code Bitmatrix BM = Mutiwriter.encode (contents, Barcodeformat.qr_code, width, height, hint);
Barcodewriter barcodewriter = new Barcodewriter ();
Bitmap Bitmap = barcodewriter.write (BM);
Gets the actual size of the two-dimensional code (removes the actual size of the two-dimensional code from both sides) int[] Rectangle = bm.getenclosingrectangle ();
Calculates the size and position of the inserted picture int MIDDLEIMGW = math.min ((int) (RECTANGLE[2)/3.5), middleimg.width);
int middleimgh = math.min ((int) (RECTANGLE[3]/3.5), middleimg.height); int MIDDLEIMGL = (bitmap.
WIDTH-MIDDLEIMGW)/2; int middleimgt = (bitmap.
HEIGHT-MIDDLEIMGH)/2; The IMG is converted to BMP format, otherwise the Graphics object Bitmap bmpimg = new Bitmap (BITMAP) cannot be created later. Width, Bitmap.
Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); using (Graphics g = graphics.fromimage (bmpimg)) {G.interpolationmode = System.Drawing.Drawing2D.Interpolation
Mode.highqualitybicubic;
G.smoothingmode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; G.compositingquality = System.drawing.Drawing2D.CompositingQuality.HighQuality;
G.drawimage (bitmap, 0, 0);
///Insert Picture in two-dimensional code Graphics mygraphic = Graphics.fromimage (bmpimg);
White Bottom Mygraphic.fillrectangle (brushes.white, MIDDLEIMGL, Middleimgt, MIDDLEIMGW, MIDDLEIMGH);
Mygraphic.drawimage (middleimg, MIDDLEIMGL, Middleimgt, MIDDLEIMGW, MIDDLEIMGH);
return bmpimg; }
The effect is as follows:
There is a picture and no picture of the generation of the same, the reason is not clear, initially thought that the middle of the picture is because of the original fault-tolerant rate.
The corresponding parsing code is also simple:
Create a barcode reader instance
ibarcodereader reader = new Barcodereader ();
Load a bitmap
bitmap barcodebitmap = (bitmap) image.fromfile ("C:\\sample-barcode-image.png");
Detect and decode the barcode inside the bitmap result
= reader. Decode (BARCODEBITMAP);
Do something with the
"result if" (Result!= null)
{
This.txtDecoderType.Text = result. Barcodeformat.tostring ();
This.txtDecoderContent.Text = result. Text;
}
The above is the generation and parsing of two-dimensional code, as the generation of one-dimensional code and corresponding parsing is also very simple.
Other commonly used to generate two-dimensional code components are: qrcode.net (open source), zxing (open source), Thoughtworks.qrcode and so on.
After understanding the data storage of two-dimensional code, we can generate creative two-dimensional code based on these technologies.
Reference: QR two-dimensional code generator source code (middle can insert small picture) barcode and two-dimensional code codec implemented in C # How to asp.net and WPF display two-dimensional code C # generating two-dimensional code (QR code) two-dimensional code with qrcode.net details and principles to take you to explore the mysteries of the barcode world Android two-dimensional code recognition Open source project Zxing compilation