unityios相册_Unity调IOS相册

1 #import "IOSCameraController.h"

2

3 @implementationIOSCameraController4 -(void)OpenCamera:(UIImagePickerControllerSourceType)type{5 //创建UIImagePickerController实例

6 UIImagePickerController *picker;7 picker=[[UIImagePickerController alloc]init];8 //设置代理

9 picker.delegate =self;10 //是否允许编辑 (默认为NO)

11 picker.allowsEditing =YES;12 //设置照片的来源

13 picker.sourceType =type;14 //展示选取照片控制器

15 if (picker.sourceType == UIImagePickerControllerSourceTypePhotoLibrary &&[[UIDevice currentDevice] userInterfaceIdiom] ==UIUserInterfaceIdiomPad) {16 picker.modalPresentationStyle =UIModalPresentationPopover;17 UIPopoverPresentationController *popover =picker.popoverPresentationController;18 //picker.preferredContentSize = [UIScreen mainScreen].bounds.size;

19 popover.delegate =self;20 popover.sourceRect = CGRectMake(0, 0, 0, 0);21 popover.sourceView =self.view;22 popover.permittedArrowDirections =UIPopoverArrowDirectionAny;23 [self presentViewController:picker animated:YES completion:nil];24 } else{25 [self presentViewController:picker animated:YES completion:^{}];26 }27

28 }29 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{30 [picker dismissViewControllerAnimated:YES completion:^{}];31 UIImage *image = [info objectForKey:@"UIImagePickerControllerEditedImage"];32 if (image ==nil) {33 image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];34 }35 //图片旋转

36 if (image.imageOrientation !=UIImageOrientationUp) {37 //图片旋转

38 image =[self fixOrientation:image];39 }40 NSString *imagePath = [self GetSavePath:@"Temp.jpg"];41 [self SaveFileToDoc:image path:imagePath];42 }43 -(NSString*)GetSavePath:(NSString *)filename{44 NSArray *pathArray =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);45 NSString *docPath = [pathArray objectAtIndex:0];46 return[docPath stringByAppendingPathComponent:filename];47 }48 -(void)SaveFileToDoc:(UIImage *)image path:(NSString *)path{49 NSData *data;50 if (UIImagePNGRepresentation(image)==nil) {51 data = UIImageJPEGRepresentation(image, 1);52 }else{53 data =UIImagePNGRepresentation(image);54 }55 [data writeToFile:path atomically:YES];56 UnitySendMessage("Canvas", "Message", "Temp.jpg");57 }58 #pragma mark 图片处理方法

59 //图片旋转处理

60 - (UIImage *)fixOrientation:(UIImage *)aImage {61 CGAffineTransform transform =CGAffineTransformIdentity;62

63 switch(aImage.imageOrientation) {64 caseUIImageOrientationDown:65 caseUIImageOrientationDownMirrored:66 transform =CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height);67 transform =CGAffineTransformRotate(transform, M_PI);68 break;69

70 caseUIImageOrientationLeft:71 caseUIImageOrientationLeftMirrored:72 transform = CGAffineTransformTranslate(transform, aImage.size.width, 0);73 transform =CGAffineTransformRotate(transform, M_PI_2);74 break;75

76 caseUIImageOrientationRight:77 caseUIImageOrientationRightMirrored:78 transform = CGAffineTransformTranslate(transform, 0, aImage.size.height);79 transform = CGAffineTransformRotate(transform, -M_PI_2);80 break;81 default:82 break;83 }84

85 switch(aImage.imageOrientation) {86 caseUIImageOrientationUpMirrored:87 caseUIImageOrientationDownMirrored:88 transform = CGAffineTransformTranslate(transform, aImage.size.width, 0);89 transform = CGAffineTransformScale(transform, -1, 1);90 break;91

92 caseUIImageOrientationLeftMirrored:93 caseUIImageOrientationRightMirrored:94 transform = CGAffineTransformTranslate(transform, aImage.size.height, 0);95 transform = CGAffineTransformScale(transform, -1, 1);96 break;97 default:98 break;99 }100

101 //Now we draw the underlying CGImage into a new context, applying the transform102 //calculated above.

103 CGContextRef ctx =CGBitmapContextCreate(NULL, aImage.size.width, aImage.size.height,104 CGImageGetBitsPerComponent(aImage.CGImage), 0,105 CGImageGetColorSpace(aImage.CGImage),106 CGImageGetBitmapInfo(aImage.CGImage));107 CGContextConcatCTM(ctx, transform);108 switch(aImage.imageOrientation) {109 caseUIImageOrientationLeft:110 caseUIImageOrientationLeftMirrored:111 caseUIImageOrientationRight:112 caseUIImageOrientationRightMirrored:113 //Grr...

114 CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.height,aImage.size.width), aImage.CGImage);115 break;116

117 default:118 CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.width,aImage.size.height), aImage.CGImage);119 break;120 }121 //And now we just create a new UIImage from the drawing context

122 CGImageRef cgimg =CGBitmapContextCreateImage(ctx);123 UIImage *img =[UIImage imageWithCGImage:cgimg];124 CGContextRelease(ctx);125 CGImageRelease(cgimg);126 returnimg;127 }128 @end

129 #if defined(__cplusplus)

130 extern "C"{131 #endif

132 voidIOS_OpenCamera(){133 IOSCameraController *app =[[IOSCameraController alloc]init];134 UIViewController *vc =UnityGetGLViewController();135 [vc.view addSubview:app.view];136 [app OpenCamera:UIImagePickerControllerSourceTypeCamera];137 }138 voidIOS_OpenAlbum(){139 IOSCameraController *app =[[IOSCameraController alloc]init];140 UIViewController *vc =UnityGetGLViewController();141 [vc.view addSubview:app.view];142 [app OpenCamera:UIImagePickerControllerSourceTypePhotoLibrary];143 }144 #if defined(__cplusplus)

145 }146 #endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值