缩小图像尺寸和大小.net core c#

时间:2018-08-06 04:24:24

标签: image-processing .net-core compression

我不是真的很喜欢图像处理,如果这很简单,那就对不起。任何想法表示赞赏。

我正在使用.net核心Web API进行操作,用户将上传照片,并且当图像的宽度太大时,我将其缩小以减小图像的大小。但是,当我当前成功按宽高比减小图像宽度时,图像尺寸会增加!但是,如果我手动打开画图文件并减小宽度,则图像尺寸会大大减小。仅仅是因为文件失去了全部质量吗?

我目前正在使用JPG进行测试,但需要涵盖所有图像格式。

有关测试的一些信息: 原始图像大小为W:4288,H:2844,大小:1.38MB。 转换后:W:1000,H:633,大小:1.64MB。

这是我获得新尺寸的方法:

Image image = System.Drawing.Image.FromFile(@"c:\\testImage\\" + file.FileName);
int newHeight = image.Height;
int newWidth = image.Width;
int maxWidth = permittedWidth;

if (maxWidth > 0 && newWidth > maxWidth) //WidthResize
{
   Decimal divider = Math.Abs((Decimal)newWidth / (Decimal)maxWidth);
   newWidth = maxWidth;
   newHeight = (int)Math.Round((Decimal)(newHeight / divider));
}

这是我生成新图像的方式:

using (Graphics gr = Graphics.FromImage(newImage))
{
    using (Graphics existingGr = Graphics.FromImage(newImage))
    {
        gr.SmoothingMode = existingGr.SmoothingMode;
        gr.InterpolationMode = existingGr.InterpolationMode;
        gr.PixelOffsetMode = existingGr.PixelOffsetMode;
        gr.CompositingMode = existingGr.CompositingMode;
        gr.CompositingQuality = existingGr.CompositingQuality;
        gr.TextContrast = existingGr.TextContrast;
        gr.TextRenderingHint = existingGr.TextRenderingHint;
    }

    gr.DrawImage(image, new Rectangle(0, 0, newWidth, newHeight));
}
newImage.Save(@"C:\\testimage\\third_converted." + System.IO.Path.GetExtension(@"c:\\testImage\\" + file.FileName));

0 个答案:

没有答案