我正在使用.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");
}