创建一个ZIP压缩文件而不压缩?

问题描述:

有没有办法将JPG文件添加到ZIP压缩文件而不用重新压缩它们?听起来很奇怪,我知道。创建一个ZIP压缩文件而不压缩?

通过PHP创建ZIP文件使用大量的CPU。使用不带comprssion的ZIP仍然使用大量的CPU。如果我只想将图像(JPG)添加到档案中,为什么当JPG已经被压缩时它们会被重新压缩?

我知道,ZIP存档中的每个文件都需要使用与原始文件不同的格式(压缩),但也许有一种方法可以在每个文件前面设置一些标题(无需重新压缩)并复制那些一起到一个ZIP存档。

+4

是否需要zip?因为[tarball](http://en.wikipedia.org/wiki/Tar_(file_format))对于没有压缩的归档是理想的... [PEAR]中有一个PHP实现(http://pear.php。 net/package/Archive_Tar) – DaveRandom 2012-03-01 12:38:56

+0

JPEG图像被ZIP文件第二次压缩,但是它是一种不同类型的压缩,没有数据丢失。 另外,我同意@DaveRandom,tarballs在这里是个好主意。 – Andrea 2012-03-01 12:39:05

+0

谢谢。我会检查一个tarball。 – Mike 2012-03-01 12:52:42

既然你已经标记了这个php,我假设你的问题适用于PHP zip扩展,在这种情况下,答案是:

没有没有。

PHP zip扩展does not currently allow you to set the compression method。 (该错误已经开放了好几年,截至2012年1月仍未解决)。

+2

截至2017年,一切都很好!只需使用$ zip-> setCompressionIndex($ ix,ZipArchive :: CM_STORE); – Teson 2017-05-18 09:28:11

+1

@ user247245请注意,它仅适用于PHP 7. – 2017-07-05 07:18:47

+0

如何使用'addGlob()'设置压缩级别? – Mirko 2018-02-16 16:25:11

ZipArchive不允许这样做(据我所知,虽然扩展没有完整记录在php.net手册中)。

但是,PCLZip库在将文件添加到zip时允许使用PCLZIP_OPT_NO_COMPRESSION参数。