压缩二维码
This commit is contained in:
parent
e3a3201a06
commit
33b238b156
|
|
@ -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"))
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue