如何将图片大小调整为特定文件大小?

时间:2010-01-19 14:18:11

标签: c# .net-3.5

我想将图片调整为特定文件大小。例如,不超过200KB。 使用C#.NET实现这一目标的最佳方法是什么?

谢谢!

5 个答案:

答案 0 :(得分:3)

如果您考虑一下,在调整图像大小之前,您不会知道图像的文件大小。因此,您必须执行连续的迭代尝试并在之后比较文件大小,或者您可以更改约束以将图像限制为特定的高度和宽度维度集。

答案 1 :(得分:2)

答案 2 :(得分:1)

您可以使用Drawing.Image类做很多事情来调整图像大小。

关于如何做到这一点有很多问题。这是one

就尺寸而言 - 在调整大小操作后你不会知道大小是多少。唯一可以确定的方法是调整大小,检查结果,如果太大,请尝试调整质量较低的大小。重复直到完成。

如果您知道尺寸和颜色深度,则可以近似尺寸,如this(相同?)问题的答案中所述。

答案 3 :(得分:1)

如果这不是一个非常重要的功能,则试错法效果很好。假设您需要将输入缩小为N * 100%,则可以通过sqrt(N) * 100%缩放两个维度来实现。{/ p>

如果 非常重要,则需要更好地了解图像压缩技术。我会假设JPG。它是一种图像格式,通过将图像分解为8x8像素块,DFT变换它们,丢弃小系数,然后压缩生成的比特流来实现有损压缩。

现在,您可以根据质量水平,你扔掉多少小系数来调整。你不需要为此重做(昂贵的)DFT。因此,如果文件结尾稍微过大,您可以丢弃一些系数并重新压缩。如果你稍微有点咄咄逼人,那就放回一些系数并再次压缩。这一切都相当快。

答案 4 :(得分:0)

粗略估计如下:

size(KB) = (width * height * bitdepth) / (8 * 1024)

由于文件信息(压缩信息等),文件大小会膨胀一些。