C#将图像大小限制在150kb以下

C#将图像大小限制在150kb以下,c#,image,visual-studio,file,C#,Image,Visual Studio,File,我们在windows c#中创建了一个软件,用于根据鼠标绘制的矩形裁剪图像 图像具有不同的尺寸和文件大小 当用户保存图像时,我们希望将文件大小保持在150Kb以下。 对于任何超过150kb的文件 我们正在压缩图像,同时使用图像插值模式保存 如果文件大小仍然在150kb以上,下一步我们要做的就是按比例减少文件大小,直到文件大小小于150kb 我们创建了一个循环,将图像尺寸减少5%,然后保存文件并检查大小,直到150kb。 因为我们将处理大量的图像,我们想确认这是否是正确的方法?或者来自stack

我们在windows c#中创建了一个软件,用于根据鼠标绘制的矩形裁剪图像

图像具有不同的尺寸和文件大小

当用户保存图像时,我们希望将文件大小保持在150Kb以下。

对于任何超过150kb的文件 我们正在压缩图像,同时使用图像插值模式保存

如果文件大小仍然在150kb以上,下一步我们要做的就是按比例减少文件大小,直到文件大小小于150kb

我们创建了一个循环,将图像尺寸减少5%,然后保存文件并检查大小,直到150kb。

因为我们将处理大量的图像,我们想确认这是否是正确的方法?或者来自stack overflow的人建议一个更好的方法

如果需要,将共享代码

附言。
每次保存图像只是为了检查大小感觉不正确。

我建议您自己计算图像大小。了解格式压缩和尺寸,您可以或多或少地预测图像的大小。您可以将此链接作为一个

检查,否则,如果您没有对其进行完全编码(此时您已经将其保存在内存流/字节数组中),您将如何确定编码图像的大小?除此之外,请确保每次调整大小循环都会调整原始图像的大小,而不是之前调整大小的图像,并可能会将5%的方法更改为更聪明的方法(二进制搜索?根据位图大小和文件格式提供的平均压缩量预测大小?。@GSerg我将“保存”读为“保存到磁盘”。在本例中,您关于在内存流/字节数组中“仅”保存映像的注释实际上是保持性能的一部分,与将数据写入磁盘相比,将数据保存到内存会更快。该工具非常有用。任何可以添加到我的项目中自动执行此操作的工具我都不知道是否存在库。但我认为这只是一个你需要在你的项目中采用的公式。你可以在类似的网站上查看一些信息。或者你们可以看看我上面发布的网站的源代码,了解它是如何工作的。