压缩文件会破坏它吗?


85

我只是要求某人向我发送一个压缩psd文件。

他们拒绝了,理由是压缩文件会破坏字体

我以为压缩文件是完全可逆的,因此为什么要使用它。我认为其他人是不正确的。

压缩破坏文件内容是否有真相?


51
也许其他人对使用jpeg压缩(有损)压缩文件(无损)感到困惑,这会使测试看起来很丑陋。
Matt H

我知道我曾经遇到过zip文件的兼容性问题,因为所有平台上都使用了文件格式...
jokoon 2011年

1
我当然经历过某些“病理”情况,Winrar和WinXP的内置功能都破坏了文件(单个zip 文件中有成千上万个文件)。这是4-5年前,当时我唯一能找到的解决方案是使用7-zip。尽我所能记住的是,即使7-Zip也无法成功解压缩其他例程创建的文件,这表明问题出在压缩而不是解压缩上。显然我还是选择在生产系统的两面都使用7-zip。
FumbleFingers

1
@jokoon:我不确定在所有平台上使用文件格式是否合法。zip文件中使用了许多不同的内部格式,并且总是有可能通过一个打包例程使用在打开时碰巧使用的其他例程不完全支持的格式来创建一个存档。
FumbleFingers 2011年

@摸索; 但是,任何体面的存档器都应该捕获哈希值更改,并将操作报告为失败-不要留下损坏的文件。
Phoshi 2011年

Answers:


133

不,压缩文件不会破坏它。如果您的zip文件未损坏,则在解压缩后它将复制相同的文件。

在这种情况下,安装在两个不同系统上的字体之间的差异可能会导致问题,但这与zip / unzip进程完全无关。


4
这就是我所怀疑的。感谢您的回答。
Alex

34
另外,某些zip格式支持冗余,这意味着以zip格式存储实际上比存储纯文件更安全
BlueRaja-Danny Pflughoeft

您不应该很快就说不,没有很多zip / unzip文件实现,其中包括所有现有的OS以及其他可以生成zip文件的东西,我不会感到惊讶的是,某些实现只关心其他一些实现。
2011年

@jokoon:然后这些文件将被破坏,他明确地排除在外
mbx 2011年

3
-1从理论上讲这是正确的,但实际上存在Mac字体在PC上以0字节解压缩的问题。这是由于创建了资源派生。自己尝试一下,看看吧。
Django Reinhardt,

80

一般使用情况,压缩是无损的(假设一个bug-freeimplementation),但有一个可以适用于数据丢失的情况:NTFS备用数据流。这个很少使用的功能允许单个文件具有多个独立的内容集。大多数代码只会看到未命名的流,但其他代码可能存在。

所以; 如果某个程序决定将数据存储在NTFS备用数据流中,则您的zip客户端将看不到该部分(它需要明确要求,而RAR是当前唯一执行此操作的部分)。

但要强调:这很少使用,通常不用于PSD之类的东西。我怀疑您的朋友/同事完全是错误的。


11
哇,这对我来说是全新的知识。
kizzx2

5
对我来说是陌生的,离奇的。什么时候文件不是文件?当其内容随意更改时。我听说过较差的功能,但并不多。
msw

7
@msw-他们不会随意变异;简单来说-与单个文件记录相关联的数据可能不止一个。几乎总是只有一个(很少使用),但是……
Marc Gravell

4
回到SO!太技术了!(当然是在开玩笑;)
拜伦·惠特洛克


32

在某些情况下,如果先压缩然后再解压缩,Mac字体可能会不同。这可能不会破坏它,但是与上面的某些声明相反,该过程可能未提供相同的文件。

在这里讨论情况:

http://xahlee.org/UnixResource_dir/macosx.html

http://ask.metafilter.com/59789/How-to-email-my-font

简而言之:

  1. 如果它们是包含资源分支的较旧字体,并且用户使用的Mac OS X版本较旧,通常为10.4或更早版本。像这样的旧字体可以在OS X上运行,尽管它们最初是用于OS 9和Macintosh操作系统的早期版本。某些人甚至很可能仍在使用他们20年前建立的字体库(据我的经验,这很常见)。这些通常是艺术家和艺术指导类型。例如,我有几种字体的创建日期为1993年,而数百种字体的创建日期为1998年,大多数带有资源派生。当然,我应该将它们转换为更现代的格式,或者停止使用它们,但让我们面对现实:一旦您购买了Adobe字体库,就再也不需要购买了。在与艺术总监进行广告合作的那几年里,

  2. 在某些版本的操作系统中将删除某些元数据。元数据可能是添加到文件信息字段中的东西。这不会破坏文件,但是同样,往返zip-unzip也不会产生相同的文件。

PS:我在这里假设如果一个人将PSD文件压缩以交付给另一个人,则该文件没有被拉平,并且字体尚未转换为轮廓,这意味着一个人也将随PSD一起交付字体文件。这样接收端的人可以对文件进行自己的更改。这是一种常见的做法。


2
+1-我希望我能给这个足够的分数以将其推到栈顶。Mac OS具有Type 1和TrueType字体变体,其中字体数据存储在资源派生中。虽然OS中的本机zip / unzip工具可以很好地处理这种情况,但并非所有工具(尤其是移植到OS X的命令行工具)都可以。更糟糕的是,压缩字体并尝试通过电子邮件或FTP发送字体破坏字体!
afrazier 2011年

1
但是这里的问题似乎在于如何压缩它们,而不是是否可以压缩。似乎需要一个了解资源派生的程序,并且您必须知道如何使用它。我读对了吗?
uSlackr

@uSlackr,是的,但是问题在接收端仍然存在。如果随后将归档文件移动到Windows,则您可能会得到一堆无用的字体文件,因为尽管Windows(特别是NTFS)确实允许文件中有多个数据流,但Windows上的字体不能那样工作。PSD文件本身很可能在Mac和Windows之间移植。
RBerteig

+1-例如,将Mac字体保存在网络驱动器上,然后从Windows或Linux PC上查看它们的大小-0字节!这是令人费解的资源分叉,混淆了“它才有效”的想法。
2011年

是的,这是我行业中众所周知的事实,Mac字体的压缩效果不佳。通常,PC用户会解压缩它们0个字节。
Django Reinhardt

14

ZIP使用校验和检查解压缩后的文件是否与打包前完全相同。

因此,如果由于某种原因(例如损坏的归档文件)进行了更改-甚至将其解压缩。


无关,因为zip使用无损压缩(或“存储”,可以禁用压缩)。校验和只是为了在出现问题时能够提供一些反馈。
akira

13
原谅这个学堂,但是ZIP不使用校验和-它使用32位循环冗余校验(aka CRC-32),它检测范围更广的错误。
Bevan

5
如果人们可以(并且确实)将加密哈希函数的结果称为“校验和”,则“校验和”一词的含义显然已经比其原始定义更宽泛。
Random832

9

仅当他们在做一些愚蠢的事情(例如在其上进行文本模式转换),或者某个地方的zip / unzip破损而被嵌入式zip混淆时。(此类错误过去曾经发生过-可能是10年前。)


4

Zip使用无损压缩算法来确保您获取的数据与您放入的数据相同。

(顺便说一句,jpg,mpeg,mp3等其他技术使用有损技术来压缩我们的眼睛和耳朵并不那么敏感的理论)


0

我在“ zipping breaks fonts”语句中看到的唯一事实是,如果PSD文件格式本身具有“压缩”版本或选项,则可以在创建这些文件的任何程序中启用该选项,并且此选项以不同方式处理字体。

除非有问题,否则使用任何zip程序都应该可以。

作为对Marc的回应,如果您尝试将包含软链接和硬链接的目录结构压缩为无法理解的压缩格式,则EXT文件系统上也会存在潜在的文件系统问题(这就是为什么我总是制作.tar.gz的原因)的.zip文件)。同样,将具有相对路径的软链接压缩然后再将其解压缩到其他位置当然是行不通的,但这不是zip程序的错。


0

如果他们以前曾遇到过该问题(通过压缩损坏PSD),则说明它们的压缩器软件有故障,它们不包括PSD上所需的所有文件,和/或计算机感染了病毒。

我会问他们是否通过将文件移到USB磁盘而有类似的损坏,只是舍弃了最后一个选项。


0

只是为了完整性起另外一个警告:压缩可能会导致文件的元数据(例如权限或上次访问时间)丢失。

我认为这通常与PSD文件和字体无关。


我认为执行此任务的无损压缩算法和程序的概念存在误解。无损方式是将压缩后的二进制流解压缩为相同的输出二进制流。元信息取决于操作系统,并且必须由操作系统和/或应用程序处理。
宝来

1
谢谢@Bora,但我没有这种误解。我知道压缩不会影响文件中的实际数据。我建议的“外部”原因可能使人们误以为zip损坏了他们的文件和目录。过去,我通过还原压缩备份而陷入困境,却发现我的应用程序不再起作用,因为它们依赖于我没有带来的元数据。(对我而言,这不是基本的误会,而只是疏忽
大意

0

邮编可能会损坏文件名。因此,Zip不使用unicode。文件名的编码未指定,在Windows上使用当前语言环境。

因此,当传输到其他系统时,您的文件名将被弄乱。

最新程序(我认为从11版开始就是winzip)使用Zip格式的扩展。

我更喜欢7z,因为我的拉链中充满了无法解开的日语名称。


0

一个zip文件应该能够准确地复制内容。

不过,有一个相关的注意事项- 如果zip文件损坏,则恢复数据要比原始格式的数据难得多。为什么?许多文件格式都内置了冗余,并且经过设计后,可以纠正较小的错误,也可以使较小的错误不严重。

想象一个视频文件。在大多数格式中,如果一小部分损坏,您将在视频的一小部分看到暂时的闪烁,但仍可以观看视频。但是,如果压缩了视频文件,则会降低纠错能力,并且根据损坏的程度,您可能根本无法解压缩文件/观看视频。(这是人为设计的示例,因为在任何情况下都无法压缩大多数视频格式)。

这对于任何压缩格式都是正确的-根据定义,压缩会减少冗余,因此减少了纠错功能及其折衷。


正如上面的评论所述,某些zip文件格式支持冗余。这样可以使其比原始格式更安全。
DMan 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.