最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用QRCode生成海報圖并嵌入定位帶logo的二維碼

 更新時間:2024年03月11日 10:13:13   作者:LighT.InEyE  
這篇文章主要為大家詳細(xì)介紹了C#如何使用QRCode生成海報圖并嵌入定位帶logo的二維碼,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考下

簡介

本案例適用在市場部同事做推廣營銷時推送個人專屬鏈接,綁定自身專屬客戶,引導(dǎo)客戶了解產(chǎn)品等各方面業(yè)務(wù)的一種引導(dǎo)模式。

框架環(huán)境介紹

  • 控制臺應(yīng)用程序
  • .NET  Framework    v4.5.2
  • 組件   QRCoder 
  • vs2019

創(chuàng)建項目

使用vs創(chuàng)建控制臺應(yīng)用程序,框架版本可以根據(jù)自己實際情況選擇,

引用與其框架對應(yīng)不沖突版本組件QRCoder

右鍵項目 吊起NuGet引用資源窗口,在瀏覽處搜索QRCoder插件

準(zhǔn)備業(yè)務(wù)場景所需要的東西 

在項目\bin\Debug下新建四個文件夾,dingwei  海報圖模板  ,logo 二維碼logo,new  生成的海報,

user 生成的二維碼logo臨時存儲區(qū)

業(yè)務(wù)代碼

using QRCoder;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace QRCoder_img
{
    class Program
    {
        static void Main(string[] args)
        {
           
                //業(yè)務(wù)場景:本次是通過一個表單帶上市場部員工id
                //生成二維碼,并定位到海報模板上,隨后綁定到該
                //員工,此刻該員工就擁有自己的推廣二維碼
                //假設(shè) 員工id ,真實業(yè)務(wù)場景應(yīng)從庫中抓取未生成二維碼的員工id,定時作業(yè)執(zhí)行。
                var id = 1;
                // 要生成的二維碼鏈接
                var url="http://baidu.com?id="+id;
                //生成的二維碼路徑
                string ewm = "";
                //生成二維碼,并返回路徑
                RenderQrCode(url, id, ref ewm);
                //定位生成新的圖
                Image img = Image.FromFile(ewm);
                Image imgBack = Image.FromFile(System.IO.Directory.GetCurrentDirectory() + "/dingwei/1.png");
                Bitmap bmp = CombinImage(270, 270, imgBack, img, 227, 668);
            //最終生成圖的路徑,可在此之后同步數(shù)據(jù)庫,或者其他不同形式業(yè)務(wù)
                string str = System.IO.Directory.GetCurrentDirectory() + "/new/1tg1.png";
                if (System.IO.File.Exists(str))
                    System.IO.File.Delete(str);
                bmp.Save(str, ImageFormat.Png);
                bmp.Clone();
                bmp.Dispose();
                img.Dispose();
                System.IO.File.Delete(ewm);
            
 
        }
 
        /// <summary>
        /// 生成帶有l(wèi)ogo的二維碼
        /// </summary>
        /// <param name="url">二維碼鏈接</param>
        /// <param name="id">市場部用戶id,也作為生成圖的名字標(biāo)識</param>
        /// <param name="ewm">生成圖的路徑</param>
        public static void RenderQrCode(string url, int id, ref string ewm)
        {
            string level = "L";
            QRCodeGenerator.ECCLevel eccLevel = (QRCodeGenerator.ECCLevel)(level == "L" ? 0 : level == "M" ? 1 : level == "Q" ? 2 : 3);
            QRCodeGenerator qrGenerator = new QRCodeGenerator();
            QRCodeData qrCodeData = qrGenerator.CreateQrCode(url, eccLevel);
            QRCode qrCode = new QRCode(qrCodeData);
            var imageewm = qrCode.GetGraphic(20, Color.Black, Color.White,
            GetIconBitmap(System.IO.Directory.GetCurrentDirectory() + "/logo/appicon.png"));
            string str = System.IO.Directory.GetCurrentDirectory() + "/user/user" + id + ".jpg";
            if (System.IO.File.Exists(str))
                System.IO.File.Delete(str);
            imageewm.Save(str, ImageFormat.Jpeg);
            imageewm.Clone();
            imageewm.Dispose();
            qrCode.Dispose();
            qrCodeData.Dispose();
            ewm = str;
        }
 
        public static Bitmap GetIconBitmap(string url)
        {
            Bitmap img = null;
            if (url.Length > 0)
            {
                try
                {
                    img = new Bitmap(url);
                }
                catch (Exception)
                {
                }
            }
            return img;
        }
        /// <summary>
        /// 兩張圖合并
        /// </summary>
        /// <param name="width">二維碼繪畫大小</param>
        /// <param name="height">二維碼繪畫大小</param>
        /// <param name="imgBack">模板圖</param>
        /// <param name="img">二維碼圖</param>
        /// <param name="xDeviation">定位x</param>
        /// <param name="yDeviation">定位Y</param>
        /// <returns></returns>
        public static Bitmap CombinImage(int width, int height, Image imgBack, Image img, int xDeviation = 0, int yDeviation = 0)
        {
            Bitmap bmp = new Bitmap(imgBack.Width, imgBack.Height);
            Graphics g = Graphics.FromImage(bmp);
            g.Clear(Color.White);
            g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height);
            g.DrawImage(img, xDeviation, yDeviation, width, height);
            GC.Collect();
            g.Dispose();
            return bmp;
        }
      
    }
}

最終效果 

到此這篇關(guān)于C#使用QRCode生成海報圖并嵌入定位帶logo的二維碼的文章就介紹到這了,更多相關(guān)C# QRCode生成海報圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#控制臺程序如何發(fā)布到服務(wù)器Linux上運行

    C#控制臺程序如何發(fā)布到服務(wù)器Linux上運行

    這篇文章主要給大家介紹了關(guān)于C#控制臺程序如何發(fā)布到服務(wù)器Linux上運行的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-11-11
  • C# Onnx實現(xiàn)DIS高精度圖像二類分割

    C# Onnx實現(xiàn)DIS高精度圖像二類分割

    這篇文章主要為大家詳細(xì)介紹了C# Onnx實現(xiàn)DIS高精度圖像二類分割的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • sqlserver備份還原數(shù)據(jù)庫功能封裝分享

    sqlserver備份還原數(shù)據(jù)庫功能封裝分享

    這篇文章主要介紹了sqlserver備份還原數(shù)據(jù)庫功能封裝示例,需要的朋友可以參考下
    2014-03-03
  • WPF基于物理像素繪制圖形

    WPF基于物理像素繪制圖形

    這篇文章介紹了WPF基于物理像素繪制圖形的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#實現(xiàn)快速比較Word文檔并顯示差異

    C#實現(xiàn)快速比較Word文檔并顯示差異

    本文將詳細(xì)介紹如何在 C# 中比較 Word 文檔,包括基礎(chǔ)對比、使用自定義選項忽略格式或特定元素,以及如何控制對比的精度,無論是對小型文檔還是復(fù)雜文檔,這些方法都能幫助你快速識別文檔差異
    2026-04-04
  • 詳解C# wpf如何嵌入外部程序

    詳解C# wpf如何嵌入外部程序

    實現(xiàn)嵌入各種窗口控件后,其實還會有一種需求:嵌入外部程序,我們有時可能需要嵌入一個瀏覽器或者或者播放器等一些已有的程序,下面我們就來看看具體操作吧
    2024-04-04
  • DataGridView自定義單元格表示值、Error圖標(biāo)顯示的方法介紹

    DataGridView自定義單元格表示值、Error圖標(biāo)顯示的方法介紹

    這篇文章介紹了DataGridView自定義單元格表示值、Error圖標(biāo)顯示的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • C#將List轉(zhuǎn)換為只讀的List方法與技巧

    C#將List轉(zhuǎn)換為只讀的List方法與技巧

    在 C# 編程的廣闊世界里,數(shù)據(jù)的安全性與穩(wěn)定性始終是我們關(guān)注的焦點,當(dāng)涉及到集合數(shù)據(jù)的處理時,有時我們會面臨這樣一個關(guān)鍵需求:將List轉(zhuǎn)換為只讀的List,所以本文給大家介紹了使用C#將List轉(zhuǎn)換為只讀的List的方法與技巧,需要的朋友可以參考下
    2025-01-01
  • WPF利用TextBlock實現(xiàn)查找結(jié)果高亮顯示效果

    WPF利用TextBlock實現(xiàn)查找結(jié)果高亮顯示效果

    在應(yīng)用開發(fā)過程中,經(jīng)常遇到這樣的需求:通過關(guān)鍵字查找數(shù)據(jù),把帶有關(guān)鍵字的數(shù)據(jù)顯示出來,同時在結(jié)果中高亮顯示關(guān)鍵字,所以本文就來和大家介紹一下如何利用TextBlock實現(xiàn)查找結(jié)果高亮顯示效果吧
    2023-08-08
  • 一文教你如何使用C#開發(fā)一個Windows后臺服務(wù)

    一文教你如何使用C#開發(fā)一個Windows后臺服務(wù)

    這篇文章主要為大家詳細(xì)介紹了如何基于C#實現(xiàn)Windows服務(wù)的創(chuàng)建、安裝、啟動、停止和卸載,并展示具體的代碼示例和操作步驟,需要的小伙伴可以了解下
    2025-08-08

最新評論

天全县| 博客| 通辽市| 桐乡市| 太谷县| 青海省| 赣榆县| 临城县| 台山市| 元氏县| 古田县| 三台县| 沙湾县| 霍林郭勒市| 鄂州市| 贵德县| 慈溪市| 洞头县| 清水河县| 青川县| 武威市| 鄂托克前旗| 彝良县| 海晏县| 碌曲县| 来宾市| 陆良县| 陆川县| 监利县| 道孚县| 扶余县| 榆林市| 荔波县| 湘潭市| 沁源县| 武威市| 怀宁县| 富源县| 邢台市| 巢湖市| 洞口县|