如何将图像保存为具有给定输出文件大小的 PNG 或 JPG 文件? (首选 C#)
我想以给定的文件大小(例如 100KB)将现有图像保存为 PNG 或 JPG。
I'd like to save an existing image as a PNG or JPG at a given file size, eg, 100KB.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
PNG 使用无损压缩,因此您无法将其压缩到特定级别以下。
在 .NET 中,您可以压缩保存 JPG,并猜测完成后文件有多大。
http://msdn.microsoft .com/en-us/library/system.drawing.image.save(VS.80).aspx
- 请参阅“保存具有压缩值的 JPEG 图像”部分。
此外,您可以调整图像尺寸以使其更小。
PNG uses lossless compression so you can not compress it below a certain level.
In .NET you can save a JPG with compression, and guess how big the file will be when completed.
http://msdn.microsoft.com/en-us/library/system.drawing.image.save(VS.80).aspx
- See the "Save JPEG image with compression value" section.
Also, you could resize the image dimensions to make it smaller.
仅当使用 JPG 2000 时,您才可以将文件大小设置为特定值。 使用 JPG,您必须尝试不同的质量值,而使用 PNG 将为您提供给定图像的一种尺寸和压缩级别 - 您只能尝试调整图像大小,这将为您提供更小的尺寸。
您还可以尝试调整图像大小,以便未压缩的图像具有您想要的大小,但 PNG,尤其是 JPG 通常会具有小得多的文件大小。
Only if using JPG 2000 you could set the file size to a specific value. Using JPG, you'll have to try different quality values and using PNG will get you one size for a given image and a compression level - you can only try to resize the image which will give you a smaller size.
You could also try to resize the image so that an uncompressed image would have the size you want, but then PNG and especially JPG will often have a much lower file size.
对于 PNG 来说,没有真正的质量设置,因此您无法真正控制文件大小。
Jpg 具有确定图像质量的质量设置。 较低的质量设置会导致文件较小。 然而,通常没有“提供大小为 x 的文件所需的质量”的选项。
您可以使用一种相当低效的方法来实现相同的结果,即在内存中转换为 jpg,查看输出有多大,向上或向下调整质量并重复,直到足够接近。 这听起来可能很糟糕,但如果您的图像不太大,您可能会发现在执行此操作时没有人注意到短暂的延迟。
For PNG there isn't really a quality setting, so you can't really control the file size.
Jpg has a quality setting that determines how good a quality the image will be. lower quality settings result in smaller files. However, there is normally no option for "give the quality needed for a file of size x".
You can achieve the same result using a rather inefficient approach of converting to jpg in memory, seeing how big the output is, adjusting the quality up or down and repeating until you get close enough. It might sound terrible, but if your images aren't too big you may find no one notices the short delay while you do this.