2012-12-10 1 views
0

사용자가 UIImagePickerController를 사용하여 사진 라이브러리에서 이미지를 선택한 다음 ALAssets 라이브러리를 사용하여 이미지를 저장할 수있는 앱을 만듭니다. 그러나 내 앱에 저장되는 이미지의 품질과 크기에는 차이가 있습니다. 사진 라이브러리에서 가져온 원본 이미지와 비교할 때ALAsset Library는 사진 라이브러리에 저장하는 동안 이미지 크기를 줄입니다.

촬영하는 이미지의 크기와 ALAsset 라이브러리를 사용하여 사진 라이브러리에 저장된 이미지를 확인하기위한 로깅을 추가했습니다.

-(void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info 
        objectForKey:UIImagePickerControllerOriginalImage]; 
    NSLog(@"Size of the image picked in bytes: %i",[UIImageJPEGRepresentation(image,1.0f) length]); 
} 

-(void)methodToSaveImage:(UIImage*)image metadata:(NSMutableDictionary*)info 
{ 
    @autoreleasepool { 
     NSLog(@"Size of image passed to be saved: %i",[UIImageJPEGRepresentation(image,1.0f) length]); 
     [self writeImageToSavedPhotosAlbum:image.CGImage metadata:info 
          completionBlock:^(NSURL* assetURL, NSError* error) { 

           //error handling 
           if (error!=nil) { 
            return; 
           } 
           ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset) 
           { 
            NSLog(@"Size of image after being saved in photo library : %i",[myasset defaultRepresentation].size); 
           }; 

           // 
           ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror) 
           { 
            NSLog(@"cant get image - %@",[myerror localizedDescription]); 
           }; 

           [self assetForURL:assetURL 
            resultBlock:resultblock 
            failureBlock:failureblock]; 


     }]; 
    } 
} 

포착하고 저장하도록 전달 된 화상의 바이트 크기는 동일하며 대략 4메가바이트 그러나 사진 라이브러리에 저장된 이미지의 크기는 2MB를 약간 넘습니다. 왜 이미지에 차이가 있는지 알려주세요. 원본 이미지와 동일한 크기의 이미지를 저장하려면 어떻게해야합니까?

+0

도움이됩니다. http://stackoverflow.com/questions/12355589/uiimagepickercontrolleroriginalimage-vs-original-asset-data –

답변

0

같은 Ans 나 또한 검색 중입니다. 그러나 두 이미지의 체크섬을 생성하는 경우 (쓰기 전과 쓰기 후). 그런 다음 사용

NSData* data = UIImageJPEGRepresentation(copyOfOriginalImage, 1); 
NSLog(@"The Read Image MD5: %@",[data MD5]); 

Checsum의 의지는 동일하게 유지됩니다. 그러나 여전히 크기 차이가 있습니다.