压缩图像,有一点吗?

时间:2014-12-11 13:31:13

标签: c# windows image .net-4.5

我正在一个网站上工作,该网站将以格式,.png,.jpeg和.gif格式托管数千个用户上传的图像。

由于会有如此大量的图像,每个文件只节省几kb的空间最终会对总存储需求产生相当大的影响。

我的第一个想法是在存储文件的文件夹上启用Windows文件夹压缩(使用Windows / IIS服务器)。在总共1Gb的数据上,节省的总空间约为200kb。

这对我来说似乎是一个糟糕的结果。因此,我去检查是否可以调整Windows文件夹压缩,但根据这篇文章,它不能是:NTFS compressed folders

然后我的下一步是我可以使用Seven Zip Sharp这样的库来单独压缩文件,因为我保存它们。但在我这样做之前,我去测试了几张不同的压缩程序。

7Mb .gif的结果就是

7z, Compress to .z7 = 1kb space saved  
7z, Compress to .zip = 2kb space INCREASE  
windows, native zip = 4kb space saved.

所以这给我留下了两个......我使用的压缩程序并不是很好,或者图像几乎已经被压缩了(...和我'我惊讶于压缩的窗户比7z好。

所以我的问题是,有没有办法减少由上面列出的图像格式组成的图像存档的文件大小?

2 个答案:

答案 0 :(得分:4)

  

我正在使用的压缩程序很糟糕,或者图像几乎已经被压缩了

最常见的图像格式已经过压缩(PNG,JPEG等)。压缩文件两次几乎不会产生任何正面结果,很可能只会增加文件大小。

  

所以我的问题是,有没有办法减少由上面列出的图像格式组成的图像存档的文件大小?

不,不太可能。压缩文件最多可以提供一些,但你专注于图像本身,而不是压缩算法。 Robert Levy的帖子中提供了一些不错的选项。我用来删除元数据的工具是PNGOUT

答案 1 :(得分:2)

大多数用户可能会上传已经完成基本压缩级别的文件,这就是为什么你没有看到大量的好处。有些用户可能正在上传未压缩的文件,但在这种情况下,您的尝试会产生影响。

也就是说,图像压缩应该被认为是来自普通文件压缩的​​唯一字段。普通文件压缩技术将“无损”,确保在文件未压缩时恢复文件的每个位 - 图像(和其他媒体)可以“有损”方式压缩,而不会将文件降级到不可接受的水平。

有一些专门的工具,您可以使用这些工具来删除元数据,应用轻微模糊,执行采样,降低质量,减少尺寸等。请在此处查看答案以获得一个好例子:{{ 3}}。最佳答案是将示例文件从264kb转换为170kb。