如何使用.NET Core压缩图像大小?



我正在使用.NET Core 2.2。在我的代码中,我使用IFormFile上传图像。如何在将图像大小(压缩到KB(之前将其压缩到服务器?我搜索解决方案,但这些答案与位图有关,但由于我使用的是 IFormFile,因此我想要与之相关的解决方案。

我将在内部检查图像大小,如果其大小最大为700KB,则我不想压缩。但如果它更高,那么我想压缩并上传。示例代码将非常有用

我尝试使用 Magick.NET 包。如何使 IFormFile 变为 MagickImage 类型?

foreach(IFormFile photo in Images)  
{
using (MagickImage mi = photo)  // Cannot implicitly convert type 
//Microsoft.AspNetCore.Http.IFormFile to ImageMagick.MagickImage
{
mi.Format = Image.Jpeg;
mi.Resize(40, 40);
mi.Quality = 10;
mi.Write(imageFile);
}
}

我使用了 Magick.NET 可用于.NET和.NET Core的库来压缩图像。有关更多详细信息,请参阅其文档。

在您的情况下,您要么需要将图像临时保存在某个地方并使用路径(类似于我的示例(,要么将其转换为内存中的an array of byte并读取它,因为它接受Byte[]

using (MagickImage image = new MagickImage(@"YourImage.jpg"))
{
image.Format = image.Format; // Get or Set the format of the image.
image.Resize(40, 40); // fit the image into the requested width and height. 
image.Quality = 10; // This is the Compression level.
image.Write("YourFinalImage.jpg");                 
}

相关内容

  • 没有找到相关文章

最新更新