APS.NET(C#)分销推荐海报程序

postmaker:微信自动生成带二维码推广海报 postmaker 自动生成微信带二维码推广海报。 这几天一个小项目,需要做一个自动生成带用户推广二维码的海报的功能。技术人员搞了几天,没有高出了,说没有找到现成的轮子。于是操起了好久没有写程序的手 自己造了一个小轮子。 这个轮子根据固定的海报格式自动生成推广海报。 原理 一般的推广活动的海报样式都一样,需要改变的只是用户的头像,昵称,以及用户的推广二维码。所以只需要做好海报背景图片,然后根据不同用户的个人信息生成对应用户的 推广海报即可。 输入信息参数 输入参数: 1. 海报背景图片(720,1280) 2. 用户头像图片(正方形,最后缩放为(88,88)) 3. 用户昵称 4. 二维码图片(正方形,最后缩放为(142,142)) 5. 文字颜色 示例 if __name__=='__main__': backImg = r"20170815112219.jpg" font = r" 立即下载

最近有个项目需要进行生成海报的程序,类似推荐注册的页面,这个在分销系统里面很常见,我们做个简要讲解,具体图片和代码如下。

调用的方法:

public string Draw(string myorganizecode,string myorganizename, string tuiorganizename,string level,string headimgurl,string nickname)
{

    //头像 
    //背景图片
    string path = Server.MapPath("/MallApi/static/home/template.jpg");

    System.Drawing.Image imgSrc = System.Drawing.Image.FromFile(path);

    string qrcode = Server.MapPath("/UploadImg/Agent/"+ myorganizecode + "/"+ level + "/"+ myorganizecode + ".jpg");
    //处理二维码图片大小 240*240px
    System.Drawing.Image qrCodeImage = ApiUtils.ReduceImage(qrcode, 360, 360);

    //处理头像图片大小 100*100px
    headimgurl = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLvDC4niccQ2ywph3bTJoLxicMmzaJeK3tMzD8F4Cq521Go0iaQFtcviade4bohbfuDNo1kxCqCDDOmqA/132";
    System.Drawing.Image titleImage = ApiUtils.CircleImage(headimgurl, 100, 100);

    using (Graphics g = Graphics.FromImage(imgSrc))
    {
        //画专属推广二维码
        g.DrawImage(qrCodeImage, new Rectangle(imgSrc.Width - qrCodeImage.Width - 195,
        imgSrc.Height - qrCodeImage.Height - 480,
        qrCodeImage.Width,
        qrCodeImage.Height),
        0, 0, qrCodeImage.Width, qrCodeImage.Height, GraphicsUnit.Pixel);
        //画头像
        g.DrawImage(titleImage, 330, 90, titleImage.Width, titleImage.Height);
        //画昵称
        Font font = new Font("Microsoft YaHei", 22, FontStyle.Regular);
        g.DrawString(nickname, font, new SolidBrush(Color.White), 350, 210);
        //画自己的经销商等级
        Font fontLevel= new Font("Microsoft YaHei", 22, FontStyle.Regular);
        g.DrawString(myorganizename, fontLevel, new SolidBrush(System.Drawing.ColorTranslator.FromHtml("#24208b")), 290, 270);
        //画邀请的话
        Font fontY = new Font("Microsoft YaHei", 26, FontStyle.Regular); 
        g.DrawString("邀请您成为", fontY, new SolidBrush(System.Drawing.ColorTranslator.FromHtml("#24208b")), 275, 370);
        Font fontName = new Font("Microsoft YaHei", 26, FontStyle.Regular);
        g.DrawString(tuiorganizename, fontName, new SolidBrush(System.Drawing.ColorTranslator.FromHtml("#24208b")), 290, 430);

    }
    string newpath = Server.MapPath(@"/UploadImg/Agent/newtg_" + Guid.NewGuid().ToString() + ".jpg");
    imgSrc.Save(newpath, System.Drawing.Imaging.ImageFormat.Jpeg);
    return newpath;
}

引用方法:

  /// <summary>
        /// 缩小/放大图片
        /// </summary>
        /// <param name="url">图片网络地址</param>
        /// <param name="toWidth">缩小/放大宽度</param>
        /// <param name="toHeight">缩小/放大高度</param>
        /// <returns></returns>
        public static Image ReduceImage(string url, int toWidth, int toHeight)
        {
            WebRequest request = WebRequest.Create(url);
            WebResponse response = request.GetResponse();
            Stream responseStream = response.GetResponseStream();

            Image originalImage = Image.FromStream(responseStream);
            if (toWidth <= 0 && toHeight <= 0)
            {
                return originalImage;
            }
            else if (toWidth > 0 && toHeight > 0)
            {
                if (originalImage.Width < toWidth && originalImage.Height < toHeight)
                    return originalImage;
            }
            else if (toWidth <= 0 && toHeight > 0)
            {
                if (originalImage.Height < toHeight)
                    return originalImage;
                toWidth = originalImage.Width * toHeight / originalImage.Height;
            }
            else if (toHeight <= 0 && toWidth > 0)
            {
                if (originalImage.Width < toWidth)
                    return originalImage;
                toHeight = originalImage.Height * toWidth / originalImage.Width;
            }
            Image toBitmap = new Bitmap(toWidth, toHeight);
            using (Graphics g = Graphics.FromImage(toBitmap))
            {
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                g.Clear(Color.Transparent);
                g.DrawImage(originalImage,
                            new Rectangle(0, 0, toWidth, toHeight),
                            new Rectangle(0, 0, originalImage.Width, originalImage.Height),
                            GraphicsUnit.Pixel);
                originalImage.Dispose();
                return toBitmap;
            }

         
        }

        /// <summary>
        /// 生成圆形图片
        /// </summary>
        /// <param name="url"></param>
        /// <param name="toWidth"></param>
        /// <param name="toHeight"></param>
        /// <returns></returns>
        public static Image CircleImage(string url, int toWidth, int toHeight)
        {
            WebRequest request = WebRequest.Create(url);
            WebResponse response = request.GetResponse();
            Stream responseStream = response.GetResponseStream();

            Image originalImage = Image.FromStream(responseStream);
         
            Image toBitmap = new Bitmap(originalImage.Width, originalImage.Height);
            using (Graphics g = Graphics.FromImage(toBitmap))
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                using (System.Drawing.Drawing2D.GraphicsPath p = new System.Drawing.Drawing2D.GraphicsPath(System.Drawing.Drawing2D.FillMode.Alternate))
                {
                    p.AddEllipse(0, 0, toWidth, toHeight);
                    g.FillPath(new TextureBrush(originalImage), p);

                    originalImage.Dispose();
                }
                return toBitmap;
            }
        }

最终效果图:
分享图片

动态掩码语言模型(MLM)优化策略:效率提升与最新技术实践 本文深入探讨了动态掩码语言模型(MLM)的优化策略与技术实践,涵盖核心原理、效率优化及2025年最新突破。重点解析了动态掩码在提升模型性能中的关键作用,包括工程实现、掩码策略演进及混合专家动态掩码等创新技术,为自然语言处理领域的研究与应用提供实用指南。 阅读详情

相关推荐

NRF24L01学习操作教程(二)——NRF实现一对一,一对多通讯

以上内容详细介绍了,使用NRF24L01实现1对1单向通讯、1对1双向通讯、1对多双向通讯。

Joseph Wen的博客 7389

C# 使用 SkiaSharp 生成个性化海报

【代码】C# 使用SkiaSharp生成海报 修改头像底图文字来源即可。

qq_37039322的博客 2053

跨境电商ERP开发之Shopee开发者账号申请

引言:由于电子信息技术和经济全球化的进一步发展,电子商务在国际贸易中的影响力和关键作用日渐突显,已变成中国出口贸易的市场趋势。跨境电商未来的发展前景必定是有助于减少经济成本、推动全球贸易便利化,有助于提高国内群众福祉,有助于打造良好的营商环境,从而推动经济长期健康发展。 gitee仓库地址: https://gitee.com/naturalwish/SSERP/tree/master 以下授权教学同ShopeeOpen Platform - Developer Guide 申请流程 ..

naturalwish的专栏 3639

C#生成自定义海报

SixLabors生成自定义海报

qq_36437991的博客 929

推荐系统在音乐领域的实践:网易云音乐推荐算法解析

你是否有过这样的经历?打开网易云音乐,“私人FM”里总能推到你想听的歌;“每日推荐”的歌单,往往藏着你没听过但一入耳就爱上的曲目。这些“懂你”的推荐背后,是一套复杂却精密的推荐系统在运转。问题陈述:音乐推荐的难点远超一般商品——音乐是高度主观的艺术,用户兴趣易随心情、场景变化;小众音乐的“长尾效应”显著,如何让冷门好歌被发现?传统协同过滤依赖历史行为,面对新用户/新歌曲的“冷启动”问题束手无策;而单纯的内容推荐又难以捕捉用户的隐性兴趣。核心方案:网易云音乐采用“混合推荐策略”——融合协同过滤(CF)

AI天才研究院 2087

告别MATLAB环境!保姆级教程:用Application Compiler把你的GUI程序打包成独立exe(2020R版本实测)

本文详细介绍了如何使用MATLAB的Application Compiler工具将GUI程序打包成独立exe文件,特别针对2020R版本进行实测。从技术原理、配置详解到打包实战与问题排查,提供完整的解决方案,帮助开发者实现无需MATLAB环境的程序分发,提升工作效率。

weixin_30571465的博客 274

C#后台生成画报(海报)

先展示下效果图 读完本文您将了解到C#后端如何生成画报,废话不多说,代码如下 编程工具:VisualStudio2017 目录 前端代码 后端-生成画报 后端-下载图片 效果图 一. 前端代码 asp:Button ID=“Button2”:生成海报按钮 asp:Button ID=“Button3”:下载图片按钮 asp:Image:展示二维码图片 <body> <form id="form1" runat="server"> <div>

星银色飞行船的博客 1550

智能车‘大脑’的诞生:揭秘电磁循迹代码背后的控制论与系统思维

本文深入探讨智能车电磁循迹系统的核心架构与控制原理,揭示了其作为精密闭环系统如何通过模块化设计、信号处理、PID控制算法及电机驱动实现自主导航。重点分析了电磁信号采集与处理流程框架,为开发者提供从理论到实践的全面指南。

arduino9maker的博客 531

.net 后端生成海报

.net 服务端生成海报

ztan 774

TruckSim与Simulink联合仿真中的车轮转角精确控制策略

本文深入探讨了TruckSim与Simulink联合仿真中实现车轮转角精确控制的关键策略。针对多轴车辆路径跟踪时转角指令失灵的常见问题,核心在于正确配置TruckSim转向轴的外部输入模式(Advanced Settings),并确保仿真接口的稳定搭建。文章详细解析了从单轴到多轴协同转向的配置方法,并提供了提升MPC路径跟踪精度的实战技巧与调试经验。

weixin_29035147的博客 367

Vue3+Vite+Electron桌面应用开发:从零到打包的完整避坑指南

本文是一份详尽的Vue3+Vite+Electron桌面应用开发实战指南。文章从项目初始化、环境配置、主进程构建、Vite深度优化,到最终的打包配置与优化,系统性地讲解了使用现代前端技术栈开发跨平台桌面应用的完整流程,并重点分享了开发与打包过程中的常见“坑点”与解决方案,旨在帮助开发者高效构建稳定可交付的桌面端应用。

hh234的博客 107

APS(高级计划与排程,Advanced Planning and Scheduling)在 MES(制造执行系统,Manufacturing Execution System)中的介绍

](https://www.goodfirms.co/production-scheduling-software/blog/best-free-production-scheduling-software)[](https://www.openproject.org/project-management-software-alternatives/best-ms-planner-alternative/)[](https://frepple.com/)// 任务时长:{机器1, 机器2}

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 2262

解决 NLPIR (中科院分词) License 过期问题

因为学习需要,使用到了中文分词技术,网上搜索一番,最终选择了名气比较大的中科院分词器(NLPIR/ICTCLAS)。 用了几个月之后突然报错: E:\code\URLClassifier\Data\NLPIR.user Not valid license or your license expired! Please feel free to contact pipy_zhan

勇敢向前冲 1万+

.Net 推荐书籍

本书是世界顶级技术专家“十年磨一剑”的经典之作,在C#和.NET领域享有盛誉。与其他泛泛介绍C#的书籍不同,本书深度探究C#的特性,并结合技术发展,引领读者深入C#的时空。作者从语言设计的动机出发,介绍支持这些特性的核心概念。作者将新的语言特性放在C#语言发展的背景之上,用极富实际意义的示例,向读者展示编写代码和设计解决方案的最佳方式。同时作者将多年的C#开发经验与读者分享,读者可咀其精华、免走弯路,使程序设计水平更上一层楼。

ZTL 254

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

机器学习算法的更深入讲解,结合 MES(制造执行系统)、WMS(仓储管理系统)、APS(高级计划与排程)、上位机、生产制造、设备制造 领域的应用场景,并提供 C# 代码实现

以下是对主要机器学习算法的更深入讲解,结合 MES(制造执行系统)、WMS(仓储管理系统)、APS(高级计划与排程)、上位机、生产制造、设备制造 领域的应用场景,并提供 C# 代码实现。C#生态中,Accord.NET 和 ML.NET 是主要工具,TensorFlow.NET 适合深度学习,XGBoost 提供高性能梯度提升。西门子(Siemens): 在智能制造中,使用线性回归预测生产线能耗,结合MES系统优化能源管理,降低10%能耗成本(参考西门子MindSphere平台案例)。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 1366

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

十天学会ASP.net之实战系列(C#和Vb.net双版本)

十天学会ASP.net之实战系列(C#和Vb.net双版本)第一天  我认为ASP.NET比ASP难很多,希望大家做好准备。难难在实现同一个效果有很多方法,大家或许会疑惑。十天学会系列教程会清晰的写出各种方法,让大家能少一点坎坷。在ASP里面,大家几乎都是使用VB,数据库嘛,也无非是SQL和ACCESS。在ASP.NET里面,数据库还是这两个但是常用的语言多了一个C#,也是微软推荐的语言,

chenyupinglvbin的专栏 457

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

一款基于 .NET MVC 框架开发、功能全面的MES系统

今天大姚给大家分享一款基于 .NET MVC 框架开发、功能全面的离散型零部件制造管理系统(MES):EasyMES。EasyMES一款基于 .NET 6 MVC 框架开发、开源免费(MIT License)、功能全面的离散型零部件制造管理系统(MES)和仓储管理系统(WMS)。

专注于C#/.NET/.NET Core学习、工作、面试干货和实战教程分享。这里聚焦了大量的C#/.NET/.NET Core优质文章、开源项目、实用工具和学习、工作、面试心得。 431

NET经典书籍必读

C#与.NET框架,入门 + 进阶 + 精通,外加并发编程实例,10本C#图书,一本都不能少。 1、《Learning hard C#学习笔记》 作者:李志  书号:978-7-115-38292-4  定价:49.00元  开本:16  页数:304 博客园超人气博主、微软MVP、资深.NET软件开发工程师Learning hard告诉你怎么学习C#!一书在手,C#不愁! “本书是作...

萧戈的专栏 5251

ASP.NET 推荐书籍

ASP.NET 推荐书籍 1、首先推荐一本ASP.NET MVC的书籍 —— 《Web开发新体验:ASP.NET 3.5 MVC架构与实战》 【点评】:ASP.NET的MVC的书籍本来就不多,非要买的话,就买这本了。你看完之后,告诉我这本书如何?我再来补充点评。 ASP.NET 3.5 MVC框架,是微软今后开发Web应用程序的一个主流技术。初学者学习ASP.NET 3.5 MVC框...

weixin_30824479的博客 199

asp.net教程

十天学会ASP.Net转自:http://soft.pcdown.net/Article/Catalog5/183.html十天学会ASP.Net之第一天我认为ASP.NET比ASP难很多,希望大家做好准备。难难在实现同一个效果有很多方法,大家或许会疑惑。十天学会系列教程会清晰的写出各种方法,让大家能少一点坎坷。在ASP里面,大家几乎都是使用VB,数据库嘛,也无非是SQL和ACCE

688

【C# 】APS.NET的Session周期创建到失效,PC端浏览器和手机端微信浏览器的区别和差异

ASP.NET Session 是一种用于在 Web 应用程序中跟踪用户状态的技术。Session 对象允许您存储特定用户会话或访问周期中的变量,并在用户通过应用程序的不同页面进行导航时保持其状态。 无论用户是通过 PC 端浏览器还是手机端微信浏览器访问应用程序,ASP.NET Session 的基本工作原理都是相同的。但是,在不同的平台上,可能会有一些特定的区别和差异

小5聊的博客 635

APS.NET MVC + EF (04)---路由和数据传递

APS.NET MVC + EF (04)---路由和数据传递 4.1 视图引擎 ASP.NET MVC 提供两种视图引擎:ASPX(C#)和Razor(CSHTML),推荐使用Razor。 4.1.1 Razor的语法 在Razor视图中,所有的服务器端代码都是围绕@展开的,下面介绍@使用的各种语法形式和应用情况。 @( ...

高原秃鹫的博客 561

asp用于取代什么技术_.NET的未来:关于.NET5,每个.Net开发人员必须知道什么

原标题:.NET的未来:关于.NET5,每个.Net开发人员必须知道什么NET 5是.NET的未来微软在Build 2019大会上宣布了新的.NET 5(.NET的未来)。 .NET 5将是用于构建在所有平台(Windows,Linux)和设备(IoT,Mobile)上运行的应用程序的单一统一平台。如果您是.NET开发人员,目前支持在.NET框架中开发的企业应用程序,那么从长远来看,您需要了解.N...

weixin_39955149的博客 383

谈谈APS.NET CORE缓存技术

首先简要的说明一下缓存 使用缓存的优点: • 提高网站的访问速度 • 适用于不易改变的数据(如某些数据库中的不变字段) 使用缓存的缺点: • 仔细规划 • 难以捕捉的错误 缓存的地点: • 服务器(单服务器) • 缓存服务器(多服务器) • 客户端 缓存技术一:In-Memory 缓存 特点: IMemoryCache 适用于 Sticky Session(粘滞的会话) 适用于任何类型的对象 St...

覃鸿宇的博客 590

十天学会ASP.Net

转自:http://soft.pcdown.net/Article/Catalog5/183.html 十天学会ASP.Net之第一天我认为ASP.NET比ASP难很多,希望大家做好准备。难难在实现同一个效果有很多方法,大家或许会疑惑。十天学会系列教程会清晰的写出各种方法,让大家能少一点坎坷。在ASP里面,大家几乎都是使用VB,数据库嘛,也无非是SQL和ACCESS。在ASP.NET里面,数据库还

ξσ Dicky's Blog σξ 3123

十天学会ASP.net之第一天

    我认为ASP.NET比ASP 难很多,希望大家做好准备。难在实现同一个效果有很多方法,大家或许会疑惑。十天学会系列教程会清晰的写出各种方法,让大家能少一点坎坷。在ASP里 面,大家几乎都是使用VB,数据库嘛,也无非是SQL和ACCESS。在ASP.NET里面,数据库还是这两个但是常用的语言多了一个C#,也是微软推荐 的语言,为.NET平台定制的语言。这样ASP.NET就有四种组合:VB+A

Winter的专栏 892
上一篇: 小程序开发--生成小程序码时,返回内容为空
下一篇: 更换域名解析后,云服务DNS未更新,造成程序无法访问页面路径
星海设计
博客等级 码龄19年 13粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星海设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值