我继承了一个项目,该项目在某些时候创建了一个zip文件,将一个XML文件添加到zip中,然后将多个PNG文件添加到同一个存档中。一切都在模拟器上正常工作,但每当我在设备上运行相同的代码时,生成的png文件在我的Mac上打开时会被更改并且无法打开。
它们似乎仍然是png文件,但'corrupt'导出的文件略大于真实文件,并且十六进制转储显示内容差异很大。标题虽然保留了......
原件:
00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 |.PNG........IHDR|
00000010 00 00 00 6d 00 00 00 75 08 06 00 00 00 44 7d 6f |...m...u.....D}o|
00000020 a0 00 00 00 19 74 45 58 74 53 6f 66 74 77 61 72 |?....tEXtSoftwar|
00000030 65 00 41 64 6f 62 65 20 49 6d 61 67 65 52 65 61 |e.Adobe ImageRea|
00000040 64 79 71 c9 65 3c 00 00 38 32 49 44 41 54 78 da |dyq?e<..82IDATx?|
损坏:
00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 04 43 67 42 49 |.PNG........CgBI|
00000010 30 00 20 02 10 f3 44 7c 00 00 00 0d 49 48 44 52 |0. ..?D|....IHDR|
00000020 00 00 00 6d 00 00 00 75 08 06 00 00 00 44 7d 6f |...m...u.....D}o|
00000030 a0 00 00 00 19 74 45 58 74 53 6f 66 74 77 61 72 |?....tEXtSoftwar|
00000040 65 00 41 64 6f 62 65 20 49 6d 61 67 65 52 65 61 |e.Adobe ImageRea|
00000050 64 79 71 c9 65 3c 00 00 38 65 49 44 41 54 ed bd |dyq?e<..8eIDAT??|
(我很欣赏文件头的一小部分不是很有用,但目的是表明损坏发生在PNG内而不是ZIP本身。)
所以我猜我所问的是之前是否有人经历过这样的事情?我刚刚尝试使用以下包装器http://www.flyblog.info/catprogramming/202.html并遇到了同样的问题,所以我猜它的libzip本身会导致这个问题吗?
有没有人有一个简单的,经过试验和测试的方法,可以将文件添加到Ipod上的zip文件中,我可以尝试交换?
如果有帮助,这里是创建zip的代码:
ZipArchive* zip = [[ZipArchive alloc] init];
BOOL ret = [zip CreateZipFile2: zipPath];
NSMutableSet *imageNames = [NSMutableSet set];
[curAlbum collectImageNames:imageNames];
for (NSString *imageName in imageNames) {
NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageName ofType:@""];
NSLog(imagePath);
ret = [zip addFileToZip:imagePath newname:@"test.png"];
}
[zip release];
任何建议表示赞赏: - )