生成二维码图片代码+加图片水印+导出
做了个小项目,根据一些基本信息,生成二维码图片,并为二维码图片加上一幅图片水印,然后导出。
1、生成二维码
ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。该项目可实现的条形码编码和解码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。---用来解码QRcode。本文引用zxing.dll,生成二维码。
引用命名空间:
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; using System.IO; using System.Collections;
生成二维码:
private void btnGenerate_Click(object sender, EventArgs e) { ByteMatrix byteMatrix; string content = this.textBox1.Text; if (!string.IsNullOrEmpty(content)) { byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 300, 300); bitmap = ToBitmap(byteMatrix); } this.pictureBox1.Image = bitmap; mapCreate = bitmap; } 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; }
加图片水印:
//图片水印处理方法 private Bitmap ImageWatermark(Bitmap map, string waterpath) { Image waterimg = Image.FromFile(waterpath); //添加水印 Graphics g = Graphics.FromImage(map); //获取水印位置设置 ArrayList loca = new ArrayList(); int x = 0; int y = 0; x = map.Width / 2 - waterimg.Width / 2; y = map.Height / 2 - waterimg.Height / 2; loca.Add(x); loca.Add(y); //g.DrawImage(waterimg, new Rectangle(int.Parse(loca[0].ToString()), int.Parse(loca[1].ToString()), waterimg.Width, waterimg.Height)); g.DrawImage(waterimg, new Rectangle(int.Parse(loca[0].ToString()), int.Parse(loca[1].ToString()), 75, 75)); return map; }
导出:
先添加 saveFileDialog控件
private void btnOut_Click(object sender, EventArgs e) { try { saveFileDialog1.ShowDialog(); string fileName = saveFileDialog1.FileName; if (fileName != null) { mapCreate.Save(fileName);//mapCreate是bitmap格式的图片 } } catch (Exception ex) { throw; } }
最新博客信息,请关注“小项目笔记”公众号;