Linux环境下.NetCore项目生成二维码,合并图片(保姆级教程)

文章讲述了作者如何在Linux服务器环境中,通过使用ZXing.Net-bindings的ImageSharp库替代System.Drawing生成二维码,以及利用SixLabors.ImageSharp处理图片合并,解决了之前在.NETCore项目中遇到的编码和兼容性问题。
摘要由CSDN通过智能技术生成

最近灵机一动,准备把之前从window服务器上可以用,但是在linux服务器上用不了的功能点梳理一下。之前用QRCoder生成二维码,合成图片用的是System.Drawing(写的代码还巨复杂),但是在linux环境有问题,直接报错。

解决方案:

生成二维码使用ZXing.Net.Bindings.ImageSharp.V2

 public static Image CreateQRCode(string value, int width = 512, int height = 512)
 {
     var writer = new ZXing.ImageSharp.BarcodeWriter<Rgba32>
     {
         Format = BarcodeFormat.QR_CODE,
         Options = new ZXing.QrCode.QrCodeEncodingOptions
         {
             DisableECI = true,
             CharacterSet = "UTF-8",
             Width = width,
             Margin = 1,
             Height = height
         }
     };
     var image = writer.WriteAsImageSharp<Rgba32>(value);
     return image;
 }

合成2张图片使用SixLabors.ImageSharp.Drawing(里面依赖了SixLabors.ImageSharp)

 /// <summary>
 /// 合并图片(小图合并到大图)
 /// </summary>
 /// <param name="mergeImagePath">需要被合并的图片(小图)</param>
 /// <param name="templateImagePath">模板图片(大图)</param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 /// <returns></returns>
 public static Image MergeImage(Image mergeImagePath, string templateImagePath, int x, int y)
 {
     // 加载需要合并的图片
     var templateImage = Image.Load(templateImagePath);
     templateImage.Mutate(o =>
     {
         o.DrawImage(mergeImagePath, new Point(x, y), 1);
     });
     return templateImage;
 }

好了,是不是代码简单多了。完美解决.netcore项目的生成二维码,合并图片在linux上的报错问题。希望有所帮助。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值