二维码生成器

二维码功能操作说明: 1、在二维码规模处填写:4,
2、在二维码版本处填写:7,
3、连接地址自己随便写一个, 4、选择自己喜欢的一张图片, 5、点击生成二维码即可,生成二维码后点击保存二维码,进行保存。

二维码生成器

面进行代码展示:
1、 选择图片功能

private void button1_Click(object sender, EventArgs e)
{
int mapsize = Convert.ToInt32(this.size.Text);
int mapversion = Convert.ToInt32(this.version.Text);
string link = this.maplink.Text;
if (myimage.Image == null)
{
MessageBox.Show(“请先添加图片!”);
}
else
{
Image img = QrCodeBitmap(link, myimage.Image,mapsize, mapversion);
this.qrimage.Image = img;
}
}

2、 生成二维码位置图
///用于生成二维码的链接
///二维码规模大小
///二维码版本
private Image QrCodeBitmap(string link,Image myimg, int size, int version)
{
const float multiple = 3.5f;
QRCodeEncoder qrcodeencoder = new QRCodeEncoder();//生成设置编码实例

qrcodeencoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//字节编码
qrcodeencoder.QRCodeScale = size;//二维码规模大小
qrcodeencoder.QRCodeVersion = version;//二维码版本
qrcodeencoder.QRCodeErrorCorrect = RCodeEncoder.ERROR_CORRECTION.M;//设置错误校验(错误更正)的级别:中等M
Image img = qrcodeencoder.Encode(link);//生成二维码image图片 

//计算图片大小
float w = img.Width / multiple;
float pw = w / myimg.Width;
float ph = w / myimg.Height;
if (pw > ph)
{
    pw = ph;
}
int mw = (int)(pw * myimg.Width);
int mh = (int)(pw * myimg.Height);

//计算图片在二维上的x,y坐标 
int x = (img.Width - mw) / 2;
int y = (img.Height - mh) / 2;
Graphics graphics = Graphics.FromImage(img);
graphics.DrawImage(myimg, x, y, mw, mh);
graphics.Dispose();
return img;

}

3、 添加二维码的图片

private void button2_Click(object sender, EventArgs e)
{
this.myimage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;

OpenFileDialog searchimg = new OpenFileDialog();

searchimg.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.gif;*.png";

if (searchimg.ShowDialog() == DialogResult.OK)
{
    this.myimage.Image = Image.FromFile(searchimg.FileName);
}

}
private void button3_Click(object sender, EventArgs e)
{
if (this.qrimage.Image == null)
{
MessageBox.Show(“没有可用的二维码图片!”);
}
else
{
SaveFileDialog saveqrimg = new SaveFileDialog();
saveqrimg.Title = “二维码图片保存”;
saveqrimg.Filter = @“jpeg|.jpg|bmp|.bmp|gif|*.gif”;
if (saveqrimg.ShowDialog() == DialogResult.OK)
{
this.qrimage.Image.Save(saveqrimg.FileName,System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}