首页 > 系统相关 >.net core 使用QRCoder在linux 下生成带logo的二维码

.net core 使用QRCoder在linux 下生成带logo的二维码

时间:2024-09-24 09:34:01浏览次数:7  
标签:core using new QRCoder logoSize linux var logo qrCodeImage

1使用nuget安装QRCoder、SkiaSharp、SkiaSharp.NativeAssets.Linux.NoDependencies

public IActionResult QrCode(string content, int pixel)
{
    content = HttpUtility.UrlDecode(content);
    string logoPath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "images", "log.png");
    using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
    using (QRCodeData qrCodeData = qrGenerator.CreateQrCode(content, QRCodeGenerator.ECCLevel.Q))
    using (PngByteQRCode qrCode = new PngByteQRCode(qrCodeData))
    {
        var qrCodeBytes = qrCode.GetGraphic(pixel, Color.Black, Color.White);
        using (MemoryStream ms = new MemoryStream(qrCodeBytes))
        {
            SKBitmap qrCodeImage = SKBitmap.Decode(ms);
            using (var logoStream = System.IO.File.Open(logoPath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                SKBitmap logo = SKBitmap.Decode(logoStream);
                int logoSize = Math.Min(qrCodeImage.Width / 3, qrCodeImage.Height / 3); // 根据二维码大小调整logo大小
                int x = (qrCodeImage.Width - logoSize) / 2;
                int y = (qrCodeImage.Height - logoSize) / 2;

                // 创建一个新的画布
                using (var canvas = new SKCanvas(qrCodeImage))
                {
                    // 绘制logo到二维码中心
                    canvas.DrawBitmap(logo, new SKRect(x, y, x + logoSize, y + logoSize));
                }
            }
            // 将最终的图像编码为PNG格式并返回内存流
            using (var image = SKImage.FromBitmap(qrCodeImage))
            using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
            {
                return File(data.ToArray(), "image/png");
            }

        }
    }

}

 

标签:core,using,new,QRCoder,logoSize,linux,var,logo,qrCodeImage
From: https://www.cnblogs.com/lkd3063601/p/18428404

相关文章

  • RHCS认证-Linux(RHel9)-Ansible
    文章目录一、ansible简介二、ansible部署三、ansible服务端测试四、ansible清单inventory五、Ad-hot点对点模式六、YAML语言模式七、RHCS-Ansible附:安装CentOS-Stream9系统7.1ansible执行过程7.2安装ansible,ansible-navigator7.2部署ansible7.3ansible-naviga......
  • Linux读写者管理sharefile文件,多个客户端向服务器输送信息,由服务器为中转站将信息存入
    Linux系统读写者将文件存入sharefile文件中,同时由多个客户端向服务器输入通信信息,并由服务器为中转站,将信息传入sharefile文件中(由于读写者存入sharefile文件的路径问题,sharefile文件要放入Linux虚拟机的“公共”文件中,不然不能运行,同时要将文件分开每个Makefile文件都要放在对......
  • L0- Linux+InternStudio 关卡
    一、使用密码进行SSH远程连接1.打开电脑powerShell终端  使用Win+R快捷键打开运行框,输入powerShell,打开powerShell终端2.回到开发机平台 进入开发机页面找到创建的开发机,点击SSH连接3.复制登录命令  粘贴到powershell中,然后按回车 出现以下页面:4.复制密码......
  • Linux上chrony配置时间同步、主从时间同步设备配置
    一.计算机设备上的两种时间1.硬件时间计算机主板BIOS上依靠主板电池供电维持运行的时间,设备关机后依然在持续计时,计算机系统开机启动时会自动读取这个时间。2.系统时间软件系统上的时间,软件启动后会去读取硬件时间,之后会独立于硬件时间运行。二.配置同步时间服务器1.安装服务(1)安装c......
  • asp.net core webapi 将两个对象/两个类合并到一起返回给前端
    举例:A,B类publicclassA{publicintid{get;set;}publicstringname{get;set;}publicstringphone{get;set;}}publicclassB{publicintage{get;set;}publicstringsex{get;set;}}publicclassAB{publicAa{get;set;}public......
  • C#实现信创国产Linux桌面录制成MP4(源码,银河麒麟、统信UOS)
    信创国产化已是大势所趋,在国产操作系统上的应用开发的需求越来越多,比如,有客户需要在银河麒麟和统信UOS上实现录制桌面生成一个mp4文件。那么这个要如何实现了?一.技术方案要完成这些功能,具体来说,需要解决如下几个技术问题:(1)桌面图像数据采集。(2)视频数据编码(H264)。(3)将编码后的......
  • 学Linux费用多少?有什么好处?
    Linux是一款开源、稳定、安全的操作系统,在云计算、大数据、物联网、金融、教育、电子商务等多个领域得到了广泛应用。尤其是随着互联网技术的发展,Linux专业人才需求量持续增长,其薪资待遇也较为丰厚,吸引了很多小伙伴前来学习。那么北京Linux培训要多少钱?包括哪些服务?以下是具......
  • 【Linux】Shell 编程规范及检查工具推荐
    本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发、订阅专栏!专栏订阅入口| 精选文章 | Kubernetes |Docker |Linux |羊毛资源 | 工具推荐 |往期精彩文章【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决......
  • Linux 文件压缩和解压缩命令
    Linux文件压缩和解压缩命令在Linux操作系统中,文件压缩和解压缩是日常管理和维护任务中的重要一环。通过压缩文件,可以显著减少存储空间的使用,并加快网络传输速度。Linux提供了多种压缩和解压缩工具,每种工具都有其特定的格式和优势。以下是一些常用的Linux文件压缩和解压缩命令及......
  • 【PAM】Linux登录认证限制
    PAM(PluggableAuthenticationModules,可插拔认证模块)是一种灵活的认证框架,用于在Linux和其他类Unix系统上管理用户的身份验证。PAM允许系统管理员通过配置不同的认证模块来定制应用程序和服务的认证方式,而不需要修改这些应用程序的源代码。0、PAM介绍PAM的核心概念......