1

앱은 내가 imagepickercontroller에서 이미지를 회전하려고 여기 imagePickerController 사용하여 사진을 촬영 한 뒤 충돌크기 변경 UIImage 및 imagePickerController 메모리 압력?

- (void)imagePickerController:(UIImagePickerController *)picker1 didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
UIImage *chosenImage = info[UIImagePickerControllerOriginalImage]; 
if (chosenImage.imageOrientation!= UIImageOrientationUp) { 
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size,self.view.opaque,0.0); 
     [chosenImage drawInRect:(CGRect){0, 0,chosenImage.size}]; 
    chosenImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

} 
UIImage *imageToDisplay =chosenImage; 
} 

이 10 MB image.How은 KBS에서 매우 낮은 크기의 이미지를 압축 할 수 있습니다?

답변

0

그냥 다음과 같이 사용하십시오.

NSURL *url = info[UIImagePickerControllerReferenceURL]; 

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset) { 
    ALAssetRepresentation *rep = [myasset defaultRepresentation]; 
    CGImageRef imageRef = [rep fullResolutionImage]; 
    if (imageRef) { 
// here is your image 
     chosenImage = [UIImage imageWithCGImage:iref]; 
    } 
}; 

ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *error) 
{ 
     NSLog(@"Error -> %@",[error localizedDescription]); 
}; 

ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease]; 
     [assetslibrary assetForURL:url 
         resultBlock:resultblock 
         failureBlock:failureblock]; 

아니면 이러한 코드를 사용할 수있어 당신에게 1000 * 1000 픽셀로 이미지를 줄 것이다

CGSize newSize = CGSizeMake(1000.0f, 1000.0f); 
UIGraphicsBeginImageContext(newSize); 
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

.

0

내가 이미지를 압축하는 솔루션을 발견했습니다

코드 아래
//Put this code in didfinish UIimagepickercontroller 
UIImage *chosenImage = info[UIImagePickerControllerOriginalImage]; 
NSData *imgData= UIImageJPEGRepresentation(chosenImage,0.1);//0.1 is loosy compression 
UIImage *compressedImage=[UIImage imageWithData:imgData]; 
UIImage *resizedImage=[self imageWithImage:compressedImage scaledToSize:CGSizeMake(290, 390)]; 

이미지

-(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
//UIGraphicsBeginImageContext(newSize); 
// In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution). 
// Pass 1.0 to force exact pixel size. 
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return newImage; 
} 
에게 크기를 조정하는 것입니다