2011-08-18 3 views
1

iPhone에서 파일의 압축을 풀기 위해 Objective Zip 라이브러리를 사용하고 있습니다.목표 - 우편 텍스트 파일에만 작동합니까?

모두 잘 작동합니다. 문제가없는 텍스트 파일은 문제없이 압축되며 파일이 올바른 것입니다. 그러나 압축 된 png 파일은 모두 손상되었습니다. 파일의 크기는 모두 원본 파일과 동일하지만 모두 손상되었습니다. 좋은 크기와 텍스트 파일에 모든 파일이 확인됩니다

-(void)installPackageFromZipFile:(NSString *)zipFile 
{ 
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDir = [documentPaths objectAtIndex:0]; 

    ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:zipFile mode:ZipFileModeUnzip]; 
    packageRegisterController *pckReg = [[packageRegisterController alloc] init]; 

    [unzipFile goToFirstFileInZip]; 

    NSArray *infos= [unzipFile listFileInZipInfos]; 

    for (FileInZipInfo *info in infos) 
    { 
     NSLog([NSString stringWithFormat:@"File Found in Zip File- %@ Size:%d", info.name, info.length]); 


     ZipReadStream *read = [unzipFile readCurrentFileInZip]; 

     if (![pckReg detectIfFileExists:[documentsDir stringByAppendingPathComponent:info.name]]) 
     { 

      NSMutableData *data = [[NSMutableData alloc] initWithLength:info.length]; 

      int bytesRead = [read readDataWithBuffer:data]; 

      [data writeToFile:[documentsDir stringByAppendingPathComponent:info.name] atomically:NO]; 

      [read finishedReading]; 


      [data release]; 

      if ([[NSString stringWithFormat:@"%@",info.name] isEqualToString:@"TEMAMANIFEST.xml"]) 
      { 
       if([self parseManifest:[documentsDir stringByAppendingPathComponent:info.name]]) 
        if ([pckReg validateManifestId:self.temaToInstall.idManifest]) 
         [self installManifest]; 

      } 

     } 
     [unzipFile goToNextFileInZip]; 
    } 

    [unzipFile close]; 
    [unzipFile release]; 
} 

이 기능은 압축 해제하지만, PNG로하지 :

는 코드입니다.

누군가 나를 도울 수 있습니까?

+0

다른 상자에서 압축 파일을 압축 해제하고 올바르게 압축했는지 확인 했습니까? –

+0

이 질문에 내 대답을 che다 : - http://stackoverflow.com/questions/2161327/creating-zip-files-in-objectivec-for-iphone – nlg

답변

1

iPhone 응용 프로그램에서 이미지를 보려고합니까, 아니면 이미지를 압축하여 Mac에서 압축을 풀고 거기에서 보려고합니까?

PNG는 iPhone 용으로 제작 될 때 '최적화 됨'이며 결과적으로 Mac에서는 '최적화되지 않은 상태'로 볼 수 없습니다.

PNG를 iPhone 앱 번들에 복사하면 이미지의 알파 채널 값을 사용하고 다른 색상 채널 인 빨강, 파랑 및 녹색으로 미리 곱하기 pngcrush 유틸리티를 통해 전송됩니다. 그 결과는 Mac에서는 볼 수없는 이미지이지만 iPhone에서는 빠르고 쉽게 렌더링 가능한 이미지입니다.

이것은 iPhone의 그래픽 프로세서가 하드웨어에서 알파 곱셈을 수행하지 않지만 소프트웨어에서 수행하기 때문에 느려집니다. pngcrush 유틸리티는 빌드 프로세스 중에 필요한 모든 알파 곱셈을 수행하므로 하드웨어 그래픽 프로세서가 모든 이미지를 렌더링 할 수 있습니다.

관련 문제