2019独角兽企业重金招聘Python工程师标准>>>

参考:http://www.tuicool.com/articles/vQR7B3

1、在ios/AppController.h 添加这两个协议 UIImagePickerControllerDelegate,UINavigationControllerDelegate

2、编写下面代码

//显示照相机
+(void) showImagePicker:(NSDictionary *)info {callBackId = [[info objectForKey:@"listener"] intValue];UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];imagePicker.delegate = self;imagePicker.allowsEditing = true;imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:imagePicker animated:YES completion:nil];
}//选取照片完成
+(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{NSLog(@"%@",info);if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:@"public.image"]) {UIImage *img = [info objectForKey:UIImagePickerControllerEditedImage];[self saveImage:img];} else {}[picker dismissViewControllerAnimated:YES completion:nil];
}// 取消选择
+(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{[picker dismissViewControllerAnimated:YES completion:nil];
}//保存图片
+(void)saveImage:(UIImage *)img
{BOOL success;NSFileManager *fileManager = [NSFileManager defaultManager];NSError *error;NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);NSString *documentsDirectory = [paths objectAtIndex:0];NSString *imgFilePath = [documentsDirectory stringByAppendingPathComponent:@"headPhoto.png"];success = [fileManager fileExistsAtPath:imgFilePath];std::string newImgPath = cocos2d::CCFileUtils::getInstance()->getWritablePath() + "/headPhoto.png";if (success) {success = [fileManager removeItemAtPath:[NSString stringWithFormat:@"%s",newImgPath.c_str()] error:&error];NSLog(@"success 2 %d",success);}// 更改尺寸UIImage * smallImage = [self thumbnailWithImageWithoutScale:img size:CGSizeMake(80, 80)];[UIImageJPEGRepresentation(smallImage, 1.0f) writeToFile:[NSString stringWithFormat:@"%s",newImgPath.c_str()] atomically:YES];// 新的照片地址回调给luacocos2d::LuaObjcBridge::pushLuaFunctionById(callBackId);
//    cocos2d::LuaObjcBridge::getStack()->pushString([imgFilePath cStringUsingEncoding:NSUTF8StringEncoding]);cocos2d::LuaObjcBridge::getStack()->pushString(newImgPath.c_str());cocos2d::LuaObjcBridge::getStack()->executeFunction(1);cocos2d::LuaObjcBridge::releaseLuaFunctionById(callBackId);}
// 实现缩略图
+(UIImage *) thumbnailWithImageWithoutScale:(UIImage *)img size:(CGSize)asize
{UIImage * newImg;if (nil == img) {newImg = nil;}else{CGSize oldsize = img.size;CGRect rect;if(asize.width/asize.height > oldsize.width/oldsize.height){rect.size.width = asize.height * oldsize.width / oldsize.height;rect.size.height = asize.width;rect.origin.x = (asize.width - rect.size.width) / 2;rect.origin.y = 0;}else{rect.size.width = asize.width;rect.size.height = asize.width * oldsize.height / oldsize.width;rect.origin.x = 0;rect.origin.y = (asize.height - rect.size.height) / 2;}UIGraphicsBeginImageContext(asize);CGContextRef content = UIGraphicsGetCurrentContext();CGContextSetFillColorWithColor(content, [[UIColor clearColor] CGColor]);UIRectFill(CGRectMake(0, 0, asize.width, asize.height));[img drawInRect:rect];newImg = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();}return newImg;
}

3、在lua里面实现

if device.platform == "ios" thenlocal function callBack( imgFileName )//重新加载文理cc.Director:getInstance():getTextureCache():reloadTexture(imgFileName)display.newSprite(imgFileName):addTo(self):pos(display.cx,display.cy)endluaoc.callStaticMethod("AppController","showImagePicker",{listener = callBack})
end

转载于:https://my.oschina.net/u/1582495/blog/390417

Quick-cocos2d-x3.3 ios实现头像选取相关推荐

  1. iOS实现头像选取(照相或者图片库)、大小等比缩放、生成圆形头像

    <span class="comment">//弹出actionsheet.选择获取头像的方式</span> <span class="co ...

  2. quick cocos2d x 手机(Android端)启动过程学习

    简要学习下quick cocos2d x 在安卓端启动的过程. 首先需要了解一点:quick cocos2d x是依托于Android的activity和GLSurfaceView(继承自Surfac ...

  3. html 头像选择,html5点击上传头像选取本地图片上传代码

    特效描述:html5 点击上传头像 选取本地图片 上传代码.html5点击上传头像,图片上传代码 代码结构 1. HTML代码 上传头像 //获取上传按钮 var input1 = document. ...

  4. ios 刷新头像_想请问各位大大,iOS中新旧头像缓存的策略是什么?如微信,每次更换个人头像后,服务器怎么处理新旧头像?...

    新旧头像如何处理,需要考虑服务端和客户端两个方面. 通常大公司会将文件上传做成基础服务,跟特定的应用无关.假设这里,文件上传为服务 A, 特定的应用为服务 B,客户端为 C.这时候替换头像大致有两种做 ...

  5. iOS键盘、选取器上的工具栏

    前言 我们在使用键盘的时候,在打字完毕后想要收起键盘继续操作,要么是习惯性点击界面空白处收起键盘,要么是在键盘上方点击一个"完成"之类的按钮来收起键盘.在Android上键盘的完成 ...

  6. iOS ALAsset的选取和存储

    访问系统相册的时候,需要对相册里面的图片进行多张选取,这个时候用到了alasset,通过alasset这个对象对相册图片进行选取和存储操作,由于数据库里只支持存储string类型,所以该如何保存ass ...

  7. ios 刷新头像_iOS上传图片到网上,并更新到服务器,常用在设置头像

    //封装一个工具类FileUploader //FileUploader.h #import @interface FileUploader : NSObject +(void) upLoadImag ...

  8. 5在ios上无法选取文件_无法在 Ubuntu 20.04 上安装 Deb 文件?这是你需要做的! | Linux 中国...

    双击 .deb 文件后无法通过 Ubuntu 20.04 的软件中心安装?你不是唯一遇到此问题的人.本教程展示了解决方法. 来源:https://linux.cn/article-12220-1.ht ...

  9. quick cocos2d x 学习系列之三Armature

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! quic ...

  10. iOS导入cocos2d游戏

    一.xcode中在自己项目中引入cocos2dx,需要导入cocos2d_libs静态库.首先需要到官网下载cocos2d引擎,cocos2d引擎下载链接点击进入官网 二.将cocos2d引擎拷贝到工 ...

最新文章

  1. vue select js 设置默认值
  2. Java设计模式(二十一):备忘录设计模式
  3. ubuntu交叉编译x264报错:‘X264_VERSION’ undeclared(已解决)运行version.sh
  4. linux centos7修改默认启动的内核(升级及切换内核)
  5. python中else和if的结合语句_python中else和if的结合语句_python中的if-else语句和字典...
  6. Luogu4936 Agent1
  7. “野火FreeRTOS教程”第7章补充知识点-异常流程
  8. php json转数组示例,php json转数组的例子
  9. 三相并网逆变器PI控制——离网模式
  10. 【论文泛读】Don‘t Stop Pretraining: Adapt Language Models to Domains and Tasks
  11. echarts柱形图根据数据排序顺序要求更改颜色
  12. java计算机毕业设计高校疫情管理源程序+mysql+系统+lw文档+远程调试
  13. 清梦_飘云羽逸_新浪博客
  14. AutoJs 4.1.1 实战教程、Hamibot
  15. FLUENT仿真精典案例#351-螺旋槽干气密封仿真
  16. 阿里云栖大会的现场,到底是个什么样?
  17. 金一文化推出“B站2233 x中央芭蕾舞团”限量手办
  18. MPLS和VPLS介绍
  19. 对冲基金:神秘Dalio和桥水崛起的秘密
  20. java ssl 报错 Received fatal alert: illegal_parameter

热门文章

  1. PyQt5多线程刷新界面防假死
  2. 【SQL】实验五 数据库的完整性
  3. 利用ArcGIS Pro对疫情数据进行分析并可视化
  4. windows使用Charles手机抓包
  5. fopen php 读取_PHP fopen读取url内容
  6. 深入剖析Redis高可用集群架构原理
  7. kubernetes集群pod异常状态ContainerCreating的解决
  8. Linux系统中安装Nginx
  9. Apache Flink 进阶(六):Flink 作业执行深度解析
  10. 为什么我推荐你用Ubuntu开发?