Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#为什么调整图像大小会增加文件大小_C#_Image Processing - Fatal编程技术网

C#为什么调整图像大小会增加文件大小

C#为什么调整图像大小会增加文件大小,c#,image-processing,C#,Image Processing,我有一个图像文件,它是6KJPG文件,宽:172px,高:172px 我使用以下代码尝试将其调整为128*128px jpg文件: public static Image ResizeImage(Image img, int width, int height) { var b = new Bitmap(width, height, PixelFormat.Format24bppRgb); using (Graphics g = Graphics.Fro

我有一个图像文件,它是6KJPG文件,宽:172px,高:172px

我使用以下代码尝试将其调整为128*128px jpg文件:

public static Image ResizeImage(Image img, int width, int height)
    {
        var b = new Bitmap(width, height, PixelFormat.Format24bppRgb);

        using (Graphics g = Graphics.FromImage(b))
        {
            g.DrawImage(img, 0, 0, width, height);
        }

        return b;
    }
这段代码奇怪地将文件大小增加到50k,有人能解释为什么吗?以及如何将图像大小调整为128*128px,并将大小保持在6k左右

非常感谢


DY

这取决于用于压缩jpeg文件的算法。某些算法比其他算法更具损耗(失去图像质量),但尺寸更小


在代码中,jpeg在内存中被扩展成位图。当它去保存128x128 jpeg时,代码使用了一种算法,该算法比保存原始图片的算法压缩更少。这导致它生成一个更大的jpeg文件,即使图像大小本身更小。

在发布的代码中,您返回的不是jpeg文件,而是位图(128x128 24bpp未压缩位图的大小为48kB)。你必须再次压缩它,可能会有所帮助。

如果你省略了g.SmoothingMode=SmoothingMode.AntiAlias,文件大小是多少?对不起,斯图尔特,你是什么意思?@DotNet用户,为什么你要编辑掉
g.SmoothingMode=SmoothingMode.AntiAlias
行,然后问@Stuart他是什么意思?他的问题似乎很清楚。如果要调整图像的大小,还应该设置
Graphics.InterpolationMode
(如果缩小,最好设置为
HighQualityBilinear
,如果放大,最好设置为
HighQualityBicubic
)。否则结果会很难看。在文本编辑器中打开调整大小的“JPG”图像。我打赌文本将以“BM”开头,这意味着您的图像是BMP(不是JPEG,但是windows和某些浏览器将从其内容中检测图像类型并正确渲染)。您好,Santosc,非常感谢。我为此花了整整一个晚上。将提供一个如何设置的示例?能否显示用于将文件保存回jpeg格式的代码?以下是一篇文章,介绍如何以编程方式设置jpeg压缩级别: