2016-09-13 4 views
0

ズームイン/ズームアウト機能を追加しようとしていて、変更を保存する前にプロファイル画像をトリミングしようとしていますが、これについてどうすればよいか分かりません。ズームイン/アウトと写真のクロップを追加する

- (void)viewDidLoad { 

    ... 

    NSString *urlString = [User sharedUser].avatar; 
    NSURLRequest *imageRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60]; 
    [_avatarImageView setImageWithURLRequest:imageRequest placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 
     _avatarImageView.image = image; 
    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 
     NSLog(@"Error: %@", error); 
    }]; 
    _avatarImageView.layer.masksToBounds = YES; 
    _avatarImageView.layer.cornerRadius = _avatarImageView.frame.size.width/2; //create circle image 

    [self initImagePicker]; 

    ... 

} 

- (void) initImagePicker { 
    myPicker = [[MyImagePicker alloc] init]; 
    myPicker.SourceVC = self; 
    myPicker.SourceView = self.view; 
    myPicker.delegate = self; 
    myPicker.isImage = YES; 

    [myPicker initImagePicker]; 
} 

- (IBAction) ChooseImageSourceAlbum { 

    tempType = POPUP_TYPE_IMAGPICKER; 
    selectArray = @[@"Camera",@"Choose Photos",@"Delete Photo"]; 

    //Call popup 
    PopupTemplateViewController *vc = [[PopupTemplateViewController alloc] initWithNibName:@"PopupTemplateViewController" bundle:nil]; 
    vc.delegate = self; 
    vc.dataArray = selectArray; 
    vc.type = POPUP_TYPE_OTHERS; 
    self.useBlurForPopup = NO; 

    [self presentPopupViewController:vc animated:YES completion:nil]; 
} 

- (void) MyImagePickerTakePicture:(NSDictionary *)_dic { 

    NSString *mediaType = [_dic objectForKey:UIImagePickerControllerMediaType]; 
    if ([mediaType isEqualToString:@"public.image"]) { 
     UIImage *image = [_dic objectForKey:UIImagePickerControllerOriginalImage]; 

     //??? add crop and zoom image here!!! 

     [self performSelector:@selector(processImage:) withObject:image afterDelay:0.25f]; 

    } 
} 

- (void)processImage:(UIImage *)image { 

    CGFloat ratio = 1.0; 
    if (image.size.width > 400) { 
     ratio = 400/image.size.width; 
    } 
    else if (image.size.height > 600) { 
     ratio = 600/image.size.height; 
    } 

    UIImage *imageResize = [self scaleImage:image toScale:ratio]; 
    [_avatarImageView setImage:imageResize]; 

    [self UpdateAvatar]; 

} 

- (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize{ 
    UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize)); 
    [image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)]; 
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return scaledImage; 
} 

- (void) UpdateAvatar { 
    [self showSeachingPopViewinView:self.view type:POPUP_TYPE_UPDATE]; 

    NSString *account = [[User sharedUser] account]; 

    NSMutableDictionary *parameters = [NSMutableDictionary new]; 
    [parameters setObject:account forKey:@"account"]; 
    [parameters setObject:_avatarImageView.image forKey:@"avatar"]; 

    [GatewayManager callUpdateAvatar:parameters delegate:self]; 
} 

- (void)popupView:(PopupTemplateViewController *)popupView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [self dismissPopupViewControllerAnimated:NO completion:nil]; 
    NSString *str = selectArray[indexPath.row]; 
    if ([str isEqualToString:@"Camera"]) { 
     [myPicker OpenCamera]; 
    } 
    else if ([str isEqualToString:@"Choose Photos"]) { 
     [myPicker OpenAlbum]; 
    } else { 
     [self deletePhoto]; 
    } 
} 

ここでプロファイル画像をタブ表示すると、カメラ、写真の選択、写真の選択の3つの選択肢を示す表示がポップアップ表示されます。私が達成したいのは、写真を撮ったり、写真を選択した後で、写真を拡大/縮小して切り抜くことができる別のビューを持っていたいということです。前もって感謝します。

+0

このリンク:http://www.samwirch .com/blog/cropping-and-resizing-images-camera-ios-and-objective-c –

答えて

0

I編集を可能にする画像ピッカーのプロパティを発見したので、私はINIT画像ピッカーでこれを追加:私はUIImagePickerControllerEditedImage

UIImagePickerControllerOriginalImageを変更 MyImagePickerTakePictureでも

imagePicker.allowsEditing = YES; //allows image to be editted before choosing 

- (void) MyImagePickerTakePicture:(NSDictionary *)_dic { 

    NSString *mediaType = [_dic objectForKey:UIImagePickerControllerMediaType]; 
    if ([mediaType isEqualToString:@"public.image"]) { 
     UIImage *image = [_dic objectForKey:UIImagePickerControllerOriginalImage]; 

     //??? add crop and zoom image here!!! 

     [self performSelector:@selector(processImage:) withObject:image afterDelay:0.25f]; 

    } 
} 
関連する問題