2010-01-15 2 views
2

UIImagePickerController을 사용하여 큰 성능 문제가 발생하여 디스크에 이미지를 저장하고 있습니다. 내가 뭘 잘못하고 있는지 알 수 없다.UIImagePickerController 카메라 소스가 메모리가 부족합니다.

- (void)imagePickerController:(UIImagePickerController *)pick 

didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)]; 
    iPixAppDelegate *delegate = (iPixAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [delegate addPicture:imageData];  
} 

addPicture 방법은이 방법으로 초기화되는 새 그림 개체를 만듭니다 : 여기 내 코드입니다

- (Picture*) initPicture:(NSData*)dat inFolder:(NSString*)pat { 
    self.data = dat; 
    NSDate *d = [NSDate date]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"yyyy-mm-dd hh-mm-ss"]; 
    self.name = [[formatter stringFromDate:d] stringByAppendingString:@".png"]; //The name by default of a picture is the date it has been taken 
    [formatter release]; 
    self.path = [pat stringByAppendingPathComponent:self.name]; 
    if(![self fileExistsAtPath:self.path]){ 
     [self.data writeToFile:self.path atomically:YES]; 
    } 
    return self; 
} 

UIImagePickerController은 아주 빠른하지만 난에 사진을 저장하면 프로그램이 매우 느려집니다 디스크.

내가 잘못하고있는 것에 대한 아이디어가 있습니까?

답변

3

비슷한 문제가있었습니다. 내가 둥근 방법은 별도의 스레드에서 피커의 이미지를 처리하는 것이 었습니다. 나는 그게 내 문제를 해결할 생각하지 않는다

- (void)imagePickerController:(UIImagePickerController *)picker 
    didFinishPickingImage:(UIImage *)image 
       editingInfo:(NSDictionary *)editingInfo 
{ 
    [[picker parentViewController] dismissModalViewControllerAnimated:YES]; 

    NSLog(@"picker did finish"); 
    [NSThread detachNewThreadSelector:@selector(useImage:) toTarget:self withObject:image]; 

} 
+0

이 도움이 많이 있습니다. 감사. 장치가 '거의 가득 차있는'상태 일 때이 버그가 발생한다고 생각합니다. –

1

원본 이미지를 찍는 것이 문제 일 수 있습니다.

카메라의 원본 이미지는 약 1200x1400 해상도로 메모리가 많아서 사진을 만들면 메모리가 부족하여 장치가 손상 될 수 있습니다.

이미지의 크기를 더 작게 조정하는 것이 좋습니다 (기본 320x480).

+1

: 피커를 닫고 이미지를 처리 ​​할 때 내 문제는 내 응용 프로그램을 처리하는 메인 쓰레드했다/UI는 탈주했다. 그 게시물에 따르면, http://stackoverflow.com/questions/1282830/uiimagepickercontroller-uimage-memory-and-more, 일단 이미지가 디스크에 쓰여지면 많은 메모리를 차지하지 않습니다. 어쨌든 답해 주셔서 감사합니다. – rmonjo

관련 문제