C# 在保持图像质量的同时减小图像大小

C# 在保持图像质量的同时减小图像大小,c#,image,size,drawing,C#,Image,Size,Drawing,如何在保持图像质量的同时将图像大小减少到40KB,并且图像的尺寸大于400px(以C为单位) 注:使用了: image.GetThumbnailImage:尺寸合适,但尺寸较小,尺寸越大,尺寸越大 绘图:大尺寸,大于700 KB 代码: 您的解决方案将完全基于您选择的图像格式、您选择的压缩选项,以及最重要的是,图像本身的性质 此任务的常用图像格式为JPEG或PNG。除其他外,这两种格式都使用图像中的颜色簇来实现压缩。这意味着如果你的图像基本上是相同或相似的颜色,你会得到较小的文件大小,如果你的图

如何在保持图像质量的同时将图像大小减少到40KB,并且图像的尺寸大于400px(以C为单位)

注:使用了:

image.GetThumbnailImage:尺寸合适,但尺寸较小,尺寸越大,尺寸越大

绘图:大尺寸,大于700 KB

代码:


您的解决方案将完全基于您选择的图像格式、您选择的压缩选项,以及最重要的是,图像本身的性质

此任务的常用图像格式为JPEG或PNG。除其他外,这两种格式都使用图像中的颜色簇来实现压缩。这意味着如果你的图像基本上是相同或相似的颜色,你会得到较小的文件大小,如果你的图像有很多分布的颜色,文件大小会更大

以下是一些例子:

使用Photoshop保存的图像。PNG使用最高压缩级别保存,JPEG使用默认质量级别8保存,最高质量级别12保存,最低质量级别1保存

巴布亚新几内亚:4 KB JPEG 8:9KB JPEG 12:15 KB JPEG 1:5 KB 巴布亚新几内亚:141 KB JPEG 8:378 KB JPEG 12:590 KB JPEG 1:146 KB 巴布亚新几内亚:341KB JPEG 8:84 KB JPEG 12:274KB JPEG 1:22 KB 正如您所看到的,相同分辨率的不同类型的图像产生的文件大小大不相同,JPEG并不总是比PNG好,反之亦然。有些JPEG图像低于您的标准,但请记住,它们是使用最差的质量设置保存的,因此图像将看起来像垃圾


一般的规则是,一个400x400像素的图像,以完美的无损质量保存在一个40KB以下的文件中。。。除非图像大部分为单色,否则这种情况不会发生。

第二种方法有什么问题?缩放图像的纵横比不同,这是您的问题吗?如何计算新宽度和新高度?尝试PNG而不是Jpeg,它使用无损压缩,仍然可以获得良好的文件大小。考虑一个像使用的算法,没有办法同时保持任意高质量的目标和任意的低尺寸约束。这不是一个编程问题。这是一个图像格式问题。400x400的PNG图像将生成一个大约为600KB的文件,因此JPG可能是最好的选择。这种方法的问题是JPG是有损的,因此根据您选择的压缩级别,您可能会看到质量上的一些重大损失,要将文件大小降低到40kb以下,您可能必须选择高压缩级别。不过,这也取决于图像本身的性质。你能给我们举个例子吗?我在很多网站上看到上传大尺寸照片时,它们被压缩到不超过40KB的大小,并且图像的尺寸很大,大于400px,同时图片是清晰的,我的问题是如何获得清晰的图片,并且大小不超过40KB?
System.Drawing.Bitmap newImage = new System.Drawing.Bitmap(newWidth, newHeight); 
using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(newImage))
{
    gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
    gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
    gr.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
    gr.DrawImage(im3age, new System.Drawing.Rectangle(new System.Drawing.Point(0, 0), new System.Drawing.Size(newWidth, newHeight)));
    newImage.Save(FullPhat, System.Drawing.Imaging.ImageFormat.Jpeg);
}