From 33b238b1563dd53500305ef1941fc87ea982fe76 Mon Sep 17 00:00:00 2001 From: youngq Date: Tue, 3 Dec 2024 13:37:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=8B=E7=BC=A9=E4=BA=8C=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Frontend/HomeController.cs | 4 ++- WGShare.API/Helpers/QrCodeOptimizerHelper.cs | 36 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 WGShare.API/Helpers/QrCodeOptimizerHelper.cs diff --git a/WGShare.API/Controllers/Frontend/HomeController.cs b/WGShare.API/Controllers/Frontend/HomeController.cs index 4b5215e..5cf3f4c 100644 --- a/WGShare.API/Controllers/Frontend/HomeController.cs +++ b/WGShare.API/Controllers/Frontend/HomeController.cs @@ -335,7 +335,9 @@ namespace WGShare.API.Controllers.Frontend // 处理图片数据 var imageArr = await result.Content.ReadAsByteArrayAsync(); var imgStr = Convert.ToBase64String(imageArr); - RedisHelper.Instance.Set(RedisKeyConstant.WxMiniProgram.GetRoomQrCode(roomNum, env), imgStr, TimeSpan.FromMinutes(10)); + + imgStr = QrCodeOptimizerHelper.CompressImage(imgStr, 50); + RedisHelper.Instance.Set(RedisKeyConstant.WxMiniProgram.GetRoomQrCode(roomNum, env), imgStr, TimeSpan.FromDays(1)); return imgStr; } else if (contentType != null && contentType.Contains("json")) diff --git a/WGShare.API/Helpers/QrCodeOptimizerHelper.cs b/WGShare.API/Helpers/QrCodeOptimizerHelper.cs new file mode 100644 index 0000000..2119161 --- /dev/null +++ b/WGShare.API/Helpers/QrCodeOptimizerHelper.cs @@ -0,0 +1,36 @@ +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.Formats.Jpeg; +using System.Drawing.Imaging; + +namespace WGShare.API.Helpers +{ + public class QrCodeOptimizerHelper + { + public static string CompressImage(string base64String, int quality) + { + // 将 Base64 字符串转换为字节数组 + byte[] imageBytes = Convert.FromBase64String(base64String); + + // 使用 ImageSharp 加载图像 + using (Image image = Image.Load(imageBytes)) + { + // 设置压缩参数 + JpegEncoder jpegEncoder = new JpegEncoder + { + Quality = quality + }; + + // 创建一个新的内存流来保存压缩后的图像 + using (MemoryStream compressedMs = new MemoryStream()) + { + image.Save(compressedMs, jpegEncoder); + + // 将压缩后的图像转换回 Base64 字符串 + byte[] compressedImageBytes = compressedMs.ToArray(); + return Convert.ToBase64String(compressedImageBytes); + } + } + } + + } +}