当前位置: 首页 > wzjs >正文

刘金鹏做网站做ppt兼职网站

刘金鹏做网站,做ppt兼职网站,建设网站存在的问题,wordpress怎么设置跳站外链接二维码QR码,是有两种实现效果,一种底层的,而另一种就是封装好的。 目录 先看效果 QRCodeGenerator 和 QRCodeEncoder 的区别 1、功能上的区别 2、使用场景的区别 3、实现细节的区别 总结 1.先创建控件 2.添加引用(两个&…

二维码QR码,是有两种实现效果,一种底层的,而另一种就是封装好的。

目录

先看效果

QRCodeGenerator 和 QRCodeEncoder 的区别

1、功能上的区别

2、使用场景的区别

3、实现细节的区别

总结

 1.先创建控件

2.添加引用(两个)

 右键=> 引用= > 管理Nuget程序包

​编辑

 3、QRCodeGenerator 的思路流程及功能实现

 二维码创建

 4、QRCodeEncoder 的思路流程及功能

 二维码创建

 5、图片保存

6、图像保存集合

7、 二维码图片合并

 8、封装(代码)

9、结果显示

先看效果

he

QRCodeGenerator 和 QRCodeEncoder 的区别

1、功能上的区别

  • QRCodeGenerator
    • 通常是一个基础类,负责生成二维码的核心逻辑
    • 专注于将输入数据(文本或URL)转换为二维码的矩阵(二维码的点阵结构)
    • 可能不直接生成图像,提供二维码的原始数据结构
  • QRCodeEncoder
    • 高层次的封装类,基于 QRCodeGenerator  的功能
    • 将二维码的矩阵数据进一步处理,将其转换为图像(PNG/JPG等)
    • 处理一些额外的逻辑,比如错误校正、编码模式选择等

2、使用场景的区别

  • QRCodeGenerator
    • 直接操作二维码的矩阵数据,需要用到 QRCodeGenerator
    • 适合开发者需要更底层控制的场景
  • QRCodeEncoder
    • 快速生成二维码图像
    • 适合开发者快速完成二维码生成场景

3、实现细节的区别

  • QRCodeGenerator
    • 是一个基础的类,专注于二维码生成的核心算法
    • 可能不处理图像渲染或高级编码逻辑
  • QRCodeEncoder
    • 一个封装类,调用了 QRCodeGenerator  的功能,并在此基础上添加了额外的处理
    • 可能直接返回二维码的图像处理

总结

  1. QRCodeGenerator:更底层,专注于生成二维码的矩阵数据
  2. QRCodeEncoder:更高层,封装了二维码生成的完整流程,可能直接生成图像

 1.先创建控件

button  SaveFileDialog  textBox

2.添加引用(两个)

 右键=> 引用= > 管理Nuget程序包

ThoughtWorks.QRCode ====>  QRCodeEncoder

QRCode =====>   QRCodeGenerator


 3、QRCodeGenerator 的思路流程及功能实现

  1.  创建一个二维码生成器
  2. 用生成器生成二维码数据(设置错误校正级别为  Q)
  3. 用生成的二维码数据创建一个二维码对象
  4. 生成二维码图像并保存为 PNG 文件
  5. 从保存的文件中加载图像
  6. 将图像显示在 Windows 窗体的 PictureBox 控件中

 二维码创建

  string s=textBox1.Text.Trim();if (string.IsNullOrEmpty(s)|| s.Length<5){MessageBox.Show("内容长度不得为空且长度不能小于5个字符");return;}//用来生成二维码的核心工具QRCodeGenerator codeGenerator = new QRCodeGenerator();//使用 codeGenerator 生成二维码数据(包含生成二维码所需的数据)QRCodeData qRCodeData = codeGenerator.CreateQrCode(s, QRCodeGenerator.ECCLevel.Q);//使用 QRCodeData 对象创建一个 QRCode 对象QRCode qRCode = new QRCode(qRCodeData);//创建二维码图像//参数1:缩放因子  参数2:前景色   参数3:背景色  参数4:是否启用纯色Bitmap bitmap=qRCode.GetGraphic(15,Color.Black,Color.White,true);string filepath = @"QRCode" + s.Substring(s.Length - 4, 4) + ".png";bitmap.Save(filepath);//Image.FromFile 从文件路径加载图像Image imagePic=Image.FromFile(filepath);//将加载的二维码显示在PictureBox控件中pictureBox1.Image=imagePic;


 4、QRCodeEncoder 的思路流程及功能

  1. 创建二维码编译器对象·
  2. 设置二维码的背景色和前景色
  3. 使用编码器将用户输入的文本编码为二维码图像
  4. 将生成的二维码图像显示在  PictureBox  控件中

 二维码创建

 string s = textBox1.Text.Trim();if (string.IsNullOrEmpty(s) || s.Length < 5){MessageBox.Show("内容长度不得为空且长度不能小于5个字符");return;}QRCodeEncoder qr = new QRCodeEncoder();qr.QRCodeBackgroundColor = Color.White;qr.QRCodeForegroundColor = Color.Black;var qrcode = qr.Encode(s, Encoding.Default);pictureBox1.Image = qrcode;

 5、图片保存

 saveFileDialog1.Filter = "Jpg 图片|*.jpg|Bmp 图片|*.bmp|Gif 图片|*.gif|Png 图片|*.png|Wmf 图片|*.wmf";saveFileDialog1.FilterIndex= 0;if(pictureBox1.Image==null){MessageBox.Show("没有课预览的图片", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);}else{if(saveFileDialog1.ShowDialog()== DialogResult.OK){pictureBox1.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);}}

6、图像保存集合

给你们封装了一个类,可以根据我之前的教程给他封装成dll,进行引用

using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using QRCoder;namespace Generate_a_QR_code
{public  class QRCoderHelper{/// <summary>/// 创建二维码返回文件路径名称/// </summary>/// <param name="plainText">二维码内容</param>public string CreateQRCodeToFile(string plainText){try{string filename = "";if (string.IsNullOrEmpty(plainText)){return null;}//二维码文件目录string filePath = "D://Image//QR";if (!Directory.Exists(filePath)){Directory.CreateDirectory(filePath);}//创建二维码文件路径名称filename = filePath + DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(100, 1000) + ".jpeg";QRCodeGenerator qRCodeGenerator = new QRCoder.QRCodeGenerator();//QRCodeGenerator.ECCLevel:纠错能力,Q级:纠错25%的数据码字QRCodeData qR = qRCodeGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);QRCode qRCode = new QRCode(qR);Bitmap bitmap = qRCode.GetGraphic(15);bitmap.Save(filename, ImageFormat.Jpeg);return filename;}catch (Exception ex){throw new Exception("Exception in the method of creating a QR code to return a file path name", ex);}}/// <summary>/// 创建二维码返回byte数组 /// </summary>/// <param name="plainText">二维码内容</param>/// <returns></returns>/// <exception cref="Exception"></exception>public byte[] CreateQRCodeToBytes(string plainText){try{if (string.IsNullOrEmpty(plainText)){return null;}QRCodeGenerator qRCodeGenerator = new QRCoder.QRCodeGenerator();//QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码字QRCodeData qRCodeData = qRCodeGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);QRCode qRCode = new QRCode(qRCodeData);Bitmap bitmap = qRCode.GetGraphic(15);MemoryStream ms = new MemoryStream();bitmap.Save(ms, ImageFormat.Jpeg);byte[] arr = new byte[ms.Length];ms.Position = 0;ms.Read(arr, 0, (int)ms.Length);ms.Close();return arr;}catch (Exception ex){throw new Exception("Exception in the method that creates a QR code and returns a byte array", ex);}}/// <summary>/// 创建二维码 返回 Base64字符串/// </summary>/// <param name="plainText">二维码内容</param>/// <param name="hasEdify"></param>/// <returns></returns>/// <exception cref="Exception"></exception>public string CreateQRCodeToBase64(string plainText, bool hasEdify = true){try{string result = "";if (string.IsNullOrEmpty(plainText)){return "";}QRCodeGenerator qRCodeGenerator = new QRCoder.QRCodeGenerator();//QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码QRCodeData qRCodeData = qRCodeGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);QRCode qRCode = new QRCode(qRCodeData);Bitmap bitmap = qRCode.GetGraphic(15);MemoryStream ms = new MemoryStream();bitmap.Save(ms, ImageFormat.Jpeg);byte[] arr = new byte[ms.Length];ms.Position = 0;ms.Read(arr, 0, (int)ms.Length);ms.Close();if (hasEdify){result = "data:image/jpeg;base64" + Convert.ToBase64String(arr);}else{result = Convert.ToBase64String(arr);}return result;}catch (Exception ex){throw new Exception("create a QR code to return a Base64 string method exception", ex);}}}
}
QRCoderHelper qrHelper = new QRCoderHelper();
string s = "https://mpbeta.csdn.net/mp_blog/creation/editor/147076940?spm=1000.2115.3001.4503";
string filename=qrHelper.CreateQRCodeToFile(s);

7、 二维码图片合并

 8、封装(代码)

 Bitmap Merge_images(Image p1, Image p2){Bitmap bitmap = new Bitmap(p1.Width, p1.Height);Graphics g = Graphics.FromImage(bitmap);g.DrawImage(p1, 0, 0, p1.Width, p2.Height);g.DrawImage(p2, (float)0.375 * p1.Width, (float)0.375 * p1.Height, (float)0.25 * p1.Width, (float)0.25 * p1.Height);return bitmap;}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ThoughtWorks.QRCode.Codec;namespace Generate_a_QR_code
{public partial class Form2 : Form{public Form2(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){QRCodeEncoder qr = new QRCodeEncoder();qr.QRCodeBackgroundColor = Color.White;qr.QRCodeForegroundColor = Color.Black;var qrcode = qr.Encode(textBox1.Text, Encoding.Default);pictureBox1.Image = qrcode;}private void button2_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();if (openFileDialog.ShowDialog() == DialogResult.OK){pictureBox2.Image = Image.FromFile(openFileDialog.FileName);}}private void button3_Click(object sender, EventArgs e){pictureBox3.Image = Merge_images(pictureBox1.Image, pictureBox2.Image);}Bitmap Merge_images(Image p1, Image p2){Bitmap bitmap = new Bitmap(p1.Width, p1.Height);Graphics g = Graphics.FromImage(bitmap);g.DrawImage(p1, 0, 0, p1.Width, p2.Height);g.DrawImage(p2, (float)0.375 * p1.Width, (float)0.375 * p1.Height, (float)0.25 * p1.Width, (float)0.25 * p1.Height);return bitmap;}}
}

9、结果显示


文章转载自:

http://rcZRSqXp.sfdky.cn
http://aItzMYCu.sfdky.cn
http://gZgEFUZl.sfdky.cn
http://WpENxTmT.sfdky.cn
http://tP141dTF.sfdky.cn
http://6duzvPXN.sfdky.cn
http://SNQhi762.sfdky.cn
http://qXg5fUEe.sfdky.cn
http://5saGwaq9.sfdky.cn
http://NOuUYR58.sfdky.cn
http://mqtbd3mQ.sfdky.cn
http://kPalICZo.sfdky.cn
http://z9JE7lZU.sfdky.cn
http://DeTk2aVj.sfdky.cn
http://WKx0JoN9.sfdky.cn
http://TH7QckVZ.sfdky.cn
http://8resfQqY.sfdky.cn
http://TKsyoOcw.sfdky.cn
http://p8psEC9C.sfdky.cn
http://aFiwolVu.sfdky.cn
http://SQHcCboQ.sfdky.cn
http://ZQIuwQyE.sfdky.cn
http://ADzjaf38.sfdky.cn
http://vosx9xJB.sfdky.cn
http://rFFLeXz4.sfdky.cn
http://YikeJLSM.sfdky.cn
http://JQRIJUZY.sfdky.cn
http://LctarnKg.sfdky.cn
http://KJWYjtND.sfdky.cn
http://bfMNBjcf.sfdky.cn
http://www.dtcms.com/wzjs/750589.html

相关文章:

  • 上海seo网站设计网站开发实现编码
  • 免费注册网站域名高档网站建设
  • 做网站找公司怎么找手机开发网站怎么做
  • 郑州营销型网站设计做网站 蓝洋
  • 网站如何优化流程如何做一个论坛网站
  • 西青网站开发上海黄浦 网站建设
  • 网站设计就业岗位分析线上营销活动有哪些
  • 网站开发对cpu要求高吗英语作文模板高中
  • 网站搭建规划模板app的制作费用
  • 免费网站自助建站手机报价
  • 计算机 网站开发 文章做兼职用哪个网站好
  • 网站关键词选取的步骤郑州it培训机构
  • 免费建立小程序网站东莞代码网站建设
  • 怎么备份网站数据库网站搭建的步骤
  • 宁乡电商网站建设报价视频网站 flash h5
  • 一家专门做爆品印刷的网站西安蓝海网站建设
  • 北京网站建设网网易梦幻西游手游官方网站下载
  • 赣州网站建设 赣州网页设计宣传彩页设计
  • 天然气公司的网站应该怎么做互联网舆情监测中心
  • 云主机网站的空间在哪里看青海省建设工程造价网站
  • 焦作做微信网站多少钱网站统计代码怎么添加
  • 网站下拉菜单重叠小说网站防盗做的好
  • 广州专业的网站建设公司哪家好wordpress自定义栏目是什么
  • 沈阳建设网站建站网站建站实训总结
  • 在网上那里能接单做网站广东模板网站建设
  • 常州做的网站的公司网站广州建网站兴田德润信任
  • 网站内容页优化信阳市住房和城乡建设局网站
  • 齐齐哈尔市网站建设公司网页原型设计
  • 网站建设的功能特点有哪些夸克建站系统源码下载
  • 做网站流量北京市公共资源交易中心