// // CropImageUtlis.m // HDL_Widget_iOS // // Created by HDL on 2019/10/18. // Copyright © 2019 JLChen. All rights reserved. // #import "CropImageUtlis.h" //#import "UIImage+Crop.h" //#import "CropImageController.h" #import "UIImageCrop.h" #import "HQImageEditViewController.h" #define WEAKSELF_AT __weak __typeof(&*self)weakSelf_AT = self; @interface CropImageUtlis () @property (nonatomic, strong) UIViewController * rootViewController; @property (nonatomic, strong) NSString *mCropPicturePath; //图片路径 @property (nonatomic, strong) NSString *mCropFileName; //图片命名 @property (nonatomic, assign) int mRATIO_X; @property (nonatomic, assign) int mRATIO_Y; @property(nonatomic, copy) void (^didSaveImageCallBackBlock)(NSString *); @end @implementation CropImageUtlis - (instancetype)initWithController:(UIViewController*)mUIViewController openType:(int)openType fileName:(NSString*)fileName mRATIO_X:(int)mRATIO_X mRATIO_Y:(int)mRATIO_Y callBackBlock:(void (^)(NSString *))callBackBlock{ self = [super init]; if(self){ _rootViewController = mUIViewController; _openType = openType; _didSaveImageCallBackBlock = callBackBlock; if(fileName == nil || fileName.length == 0 ){ _mCropFileName = @"hdl_headPicture"; }else{ _mCropFileName = fileName; } _mRATIO_X = mRATIO_X; _mRATIO_Y = mRATIO_Y; if(_openType == 101){ [self openTypeCamera]; }else{ [self openTypePhotoLibrary]; } } return self; } #pragma mark - 上传头像 -(void)openTypeCamera{ // WEAKSELF_AT UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; imagePickerController.delegate = self; imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; if(@available(iOS 13.0, *)) { imagePickerController.modalPresentationStyle = UIModalPresentationOverFullScreen; } [_rootViewController presentViewController:imagePickerController animated:YES completion:nil]; // _mUIImagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; // // [_rootViewController presentViewController:_mUIImagePickerController animated:YES completion:nil]; } -(void)openTypePhotoLibrary;{ // WEAKSELF_AT UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; imagePickerController.delegate = self; imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; if(@available(iOS 13.0, *)) { imagePickerController.modalPresentationStyle = UIModalPresentationOverFullScreen; } [_rootViewController presentViewController:imagePickerController animated:YES completion:nil]; // // _mUIImagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; // // [_rootViewController presentViewController:_mUIImagePickerController animated:YES completion:nil]; } #pragma mark -- UIImagePickerControllerDelegate - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [picker dismissViewControllerAnimated:YES completion:nil]; // [picker dismissViewControllerAnimated:YES completion:^{ // // }]; // [picker dismissViewControllerAnimated:YES completion:^{ // UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; // CropImageController * con = [[CropImageController alloc] initWithImage:image delegate:self]; // [self.navigationController pushViewController:con animated:YES]; // }]; UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; CGFloat width = [UIScreen mainScreen].bounds.size.width; CGFloat height = image.size.height * (width/image.size.width); // UIImage * orImage = [image resizeImageWithSize:CGSizeMake(width, height)]; UIImage * orImage = [UIImageCrop resizeImageWithSize:image newSize:CGSizeMake(width, height)]; HQImageEditViewController * mCropImageController = [[HQImageEditViewController alloc] initWithImage:orImage delegate:self]; mCropImageController.mCropFileName = _mCropFileName; mCropImageController.mRATIO_X = _mRATIO_X; mCropImageController.mRATIO_Y = _mRATIO_Y; mCropImageController.maskViewAnimation = YES; // [_rootViewController.navigationController pushViewController:mCropImageController animated:YES]; if(@available(iOS 13.0, *)) { mCropImageController.modalPresentationStyle = UIModalPresentationOverFullScreen; } [_rootViewController presentViewController:mCropImageController animated:YES completion:nil]; } // 取消图片选择调用此方法 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { [picker dismissViewControllerAnimated:YES completion:nil]; [self backAction:NO]; } -(void)backAction:(BOOL)bSuccess{ if(bSuccess){ // if(self.mSaveImageCallBackDelegate != NULL){ // [self.mSaveImageCallBackDelegate SaveImageCallBackUtlis:_mCropPicturePath]; //// NSLog(@"关闭页面"); // } if(_didSaveImageCallBackBlock){ _didSaveImageCallBackBlock(_mCropPicturePath); } }else{ if(_didSaveImageCallBackBlock){ _didSaveImageCallBackBlock(nil); } } // [_rootViewController.navigationController popViewControllerAnimated:YES]; } #pragma mark -- CropImageDelegate - (void)cropImageDidFinishedWithImage:(NSString *)imageName bSuccess:(BOOL)bSuccess{ if(bSuccess){ _mCropPicturePath = imageName; [self backAction:bSuccess]; }else{ [self backAction:bSuccess]; } } @end