درود
ضمن حفظ کیفیت، حجم تصاویر رو کاهش میده و فرمت اونا رو تبدیل به webp میکنه تا سرعت لود سایت بیشتر بشه.
متود Async هستش.
public static class ImageExtensions
{
/// <summary>
/// ذخیرهسازی تصویر به صورت WebP
/// مسیر ورودی باید به شکل زیر باشد:
/// "wwwroot/example/*****/*****"
/// </summary>
public static async Task<string> SaveAsWebpAsync(this IFormFile? file, string path)
{
if (file == null) return "no-image.png";
if (!path.StartsWith("wwwroot"))
throw new Exception("مسیر باید با 'wwwroot/' شروع شود. مثال: wwwroot/uploads/products/");
var imageName = NameGenarator.GenerateUniqName() + ".webp";
var savePath = Path.Combine(Directory.GetCurrentDirectory(), path, imageName);
await using var stream = file.OpenReadStream();
using var image = new MagickImage(stream);
image.Format = MagickFormat.WebP;
image.Quality = 60;
image.Settings.SetDefine(MagickFormat.WebP, "method", "4");
if (image.Width > 1600 || image.Height > 1600)
{
image.Resize(new MagickGeometry(1600, 1600)
{
IgnoreAspectRatio = false
});
}
image.Settings.SetDefine(MagickFormat.WebP, "lossless", "false");
await image.WriteAsync(savePath);
return imageName;
}
}
چقدر خوب و عالی
ممنون با ما به اشتراک گذاشتید