我想将图片调整为特定文件大小。例如,不超过200KB。 使用C#.NET实现这一目标的最佳方法是什么?
谢谢!
答案 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)
由于文件信息(压缩信息等),文件大小会膨胀一些。