现已解决 方案如下: 1、使用 jni 调用 java 方法 启动相册选择框 2、使用java将获取的图片保存到本地 3、使用Cocos2d-x中 CCImage 读取 JAVA代码如下: //启动图片选择框 private void launchCamera() { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setType("image/*");//set intent type intent.setAction(Intent.ACTION_GET_CONTENT); //取得图片信息返回MainActivity startActivityForResult(intent,1); } //图片选择回调 protected void onActivityResult(int requestCode,int resultCode,Intent data) { if(resultCode==RESULT_OK) { Uri uri = data.getData(); //通过URI获取图片绝对地址 String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(uri,proj,null,null,null); int actual_image_column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); //游标跳到首位,防止越界 cursor.moveToFirst(); String img_path = cursor.getString(actual_image_column_index); //通过地址获得位图信息 Bitmap bitmap =BitmapFactory.decodeFile(img_path); saveMyBitmap("001", bitmap); } } //保存图片到本地 private void saveMyBitmap(String bitName,Bitmap mBitmap) { File f = new File("/sdcard/" + bitName + ".png"); try { f.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block } FileOutputStream fOut = null; try { fOut = new FileOutputStream(f); } catch (FileNotFoundException e) { e.printStackTrace(); } mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut); try { fOut.flush(); } catch (IOException e) { e.printStackTrace(); } try { fOut.close(); } catch (IOException e) { e.printStackTrace(); } } C++代码如下: //读取本地存储数据 CCSprite* LoadingLayer::loadImage() { CCSprite* tempsprite = NULL; const char* path = "/sdcard/001.png"; FILE* fp = fopen(path, "rb"); if (!fp) { return tempsprite; } fseek(fp,0,SEEK_END); int len = ftell(fp); fseek(fp,0,SEEK_SET); char* buf = (char*)malloc(len); fread(buf,len,1,fp); fclose(fp); if(len==0 || buf==NULL) { return tempsprite; } CCImage* img = new CCImage; img->initWithImageData(buf,len); free(buf); cocos2d::CCTexture2D* texture = new cocos2d::CCTexture2D(); texture->initWithImage(img); img->release(); tempsprite = CCSprite::createWithTexture(texture); texture->release(); return tempsprite; } |
相关文章
- 08-07在 Excel 里使用 ODBC 读取 SAP BTP 平台上 CDS view 的数据
- 08-07Android记录21-关于ListView数据错乱的解决方案(1),移动跨平台开发框架移动
- 08-07Android - 读取XML文件中的数据
- 08-07Unity3d在各个平台读取Sqlite3数据库
- 08-07【Xamarin开发 Android 系列 8】 创建一个Json读取数据应用(上)
- 08-07如何保存或读取数据(到android的data目录)利用context获取常见目录可优化代码
- 08-07Android 读取后台数据并显示。模拟小区车辆管理系统
- 08-07android直接读取数据库文件
- 08-07Cocos2d-x v3.0正式版尝鲜体验【2】 Android平台移植
- 08-07Android中使用BufferedReader.readline阻塞读取不到数据,但是ready返回true