2010-03-18 2 views
0

Google 서버에서 다운로드 한 이미지를 캐싱하고 있습니다. 우리는이 같은 ASIHTTPRequest 콜백에서 데이터를 얻을 :iPhone이 내 앱의 문서 디렉토리에 저장된 이미지를 압축합니까?

#pragma mark ASIHTTPRequest callback 
-(void)imageDownloadFinished:(ASIHTTPRequest*)aRequest 
{ 
    NSString* fileName = aRequest.url.path.lastPathComponent; 
    [self imageDidArrive:[aRequest responseData] forFileName:fileName]; 
} 

우리는 다음과 같이 우리의 로컬 스토리지에 이미지 데이터를 쓰기 :

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0] ; 
NSString* folder = [[documentsDirectory stringByAppendingPathComponent:@"flook.images"] retain]; 
     NSString* fileName = [folder stringByAppendingFormat:@"/%@", aBaseFilename]; 

BOOL writeSuccess = [anImageData writeToFile:fileName atomically:NO]; 

다운로드 된 이미지가 45~85킬로바이트 주위에 항상 예상 크기 .

나중에, 우리는 다음과 같이 우리의 캐시에서 이미지를 읽어 훨씬 작 그들이 훨씬 더 압축하기 때문에

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0] ; 
NSString* folder = [[documentsDirectory stringByAppendingPathComponent:@"flook.images"] retain]; 
     NSString* fileName = [folder stringByAppendingFormat:@"/%@", aBaseFilename]; 

image = [UIImage imageWithContentsOfFile:fileName]; 

때때로, 이미지를이 캐시 읽기에서 반환 - 주변 5~10킬로바이트 OS가이 작업을 수행 했습니까?

편집 - 그것은 밖으로 우리가 작은 이미지를 다운로드하는 것이집니다 때문에 문제가 아이폰에없는

+0

그건 그렇고, 나는 내 자신의 코드를 디버깅하고있어, 나는 뭔가를 놓쳤다 고 믿고 싶어한다! –

+0

"anImageData"는 어떻게 생성됩니까? 예를 들어 UIImageJPEGRepresentation()을 사용하고 있습니까? –

+0

이미지 다운로드 성공을 위해 ASIHTTPRequest 콜백에 의해 제공됩니다. #pragma mark ASIHTTPRequest 콜백 - (void) imageDownloadFinished : (ASIHTTPRequest *) aRequest; { \t NSString * fileName = aRequest.url.path.lastPathComponent; \t [self imageDidArrive : [aRequest responseData] forFileName : fileName]; } –

답변

0

내가 제대로 코드를 읽고 있어요, 당신이있는 NSData 방법 writeToFile을 사용하고 있습니다 : 원자 : 파일에 쓸 수 있습니다. 이는 NSData 객체의 내용에 대한 정확한 바이트 단위 쓰기를 수행합니다.

NSData 객체가 HTTP 응답의 내용에서 직접 생성되었으므로 응답이 "아니오"이므로 압축이 수행되지 않아야합니다.

+0

뭔가 확실히 일어나고 있습니다! 하지만 아마도 내가 아직 발견하지 못한 코드의 일부분에있을 것입니다. –

0

우리는 해결책을 가지고 있습니다. 휴대 전화가 3G 네트워크에서 작동 중일 때 O2는 친절하게 조치를 취해 이미지에 여분의 JPG 압축을 적용하여 끔찍한 외모를 보입니다.

이 부분은 post on the UK 3G forum입니다.

관련 문제