压缩二维码

This commit is contained in:
youngq 2024-12-03 13:37:48 +08:00
parent e3a3201a06
commit 33b238b156
2 changed files with 39 additions and 1 deletions

View File

@ -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"))

View File

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