我不是真的很喜欢图像处理,如果这很简单,那就对不起。任何想法表示赞赏。
我正在使用.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));