Libzip corrompiendo archivos PNG cuando se comprimen en el dispositivo iPhone, pero no en simulador
-
18-09-2019 - |
Pregunta
He heredado un proyecto que en algún momento crea un archivo zip, agrega un archivo XML al zip y luego agrega una serie de archivos PNG al mismo archivo. Todo funciona bien en el simulador, pero cada vez que ejecuto el mismo código en el dispositivo en sí mismo, los archivos PNG resultantes están alterados e innecesarios cuando se abren en mi Mac.
Todavía parecen ser archivos PNG, pero los 'corruptos' de exportación son ligeramente más grandes que los archivos verdaderos, y los volcados hexadecimales muestran que los contenidos difieren drásticamente. Sin embargo, los encabezados se conservan ...
Original:
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?|
Corrupto:
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??|
(Aprecio que una pequeña porción del encabezado del archivo no sea muy útil, pero la intención es mostrar que la corrupción ocurre dentro del PNG y no en la zip en sí).
Entonces, ¿supongo que lo que pregunto es si alguien ha experimentado algo como esto antes? Acabo de intentar usar el siguiente envoltorio http://www.flyblog.info/catprogramming/202.html Y experimentó el mismo problema, ¿adivinando que su Libzip en sí mismo causa el problema?
¿Alguien tiene un método simple, probado y probado para agregar archivos a un archivo zip en el iPod en el que puedo intentar intercambiar?
Si ayuda, aquí está el código que crea el 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];
Cualquier consejo apreciado :-)
Otros consejos
Cuando XCode construye una aplicación para el dispositivo, altera cualquier recurso PNG, convirtiéndolos en BGRA (en oposición a la RGBA habitual) y premultizando el canal alfa. No hay una manera de evitar esto utilizando la configuración del proyecto que conozca; Puede intentar dar los recursos que incluye con la aplicación una extensión que no sea ".png" para ver si Xcode los copia sin alteración.