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); + } + } + } + + } +}