【Cocos2d-x】截图分享功能

本文介绍了如何在Cocos2d-x游戏中实现截图功能,并详细讲解了在Android环境下如何进行截图分享操作。同时,针对Linux系统文件权限进行了探讨,解释了在Android应用程序中处理文件权限的重要性。
摘要由CSDN通过智能技术生成

Cocos2d-x截图实现


#include "cocos2d.h"
USING_NS_CC;


// 设置纹理宽、高、像素质量
CCRenderTexture* tx = CCRenderTexture::create(CCDirector::sharedDirector()->getWinSize().width,
											  CCDirector::sharedDirector()->getWinSize().height,
											  kCCTexture2DPixelFormat_RGBA8888);
tx->begin();
CCDirector::sharedDirector()->getRunningScene()->visit();
tx->end();
tx->saveToFile(path, kCCImageFormatPNG);
图片将会保存在data/data/包名/files目录下。


Android下分享一张图片


Intent shareIntent = new Intent(Intent.ACTION_SEND);
//shareIntent.putExtra(Intent.EXTRA_TEXT, 文本);
String imgPath = 图片路径;
File file = new File(imgPath);
if (file.exists()) {
   try {
	   //一般情况下,保存的图片文件权限为rw- rw- rw-(外部可读写),但有的机型可能是rw- --- ---(外部不可读写),如果是后者会分享失败,因为外部不能读取这张图片。为了保证正常分享,需要通过chmod命令修改图片文件的权限。
	   // 修改文件权限为-rw-r--r--,外部可读
		Process p = Runtime.getRuntime().exec("chmod 644 "+imgPath);    
		int status = p.waitFor();  //让当前线程等待
		if (status == 0) {    // 返回0表示正常终止
			Log.d(TAG, "chmod succeed");
		} else {    
			Log.d(TAG, "chmod failure");
		}    
	} catch (Exception e) {
		e.printStackTrace();
	}
   Uri uri = Uri.fromFile(file);
   shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
   shareIntent.setType("image/png");
   startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.SHARE)));
}



linux系统下的文件权限


一般情况下android下的每一个应用程序都是一个独立的用户,对应一个独立的组。一个文件的权限由3组3个二进制位表示。

位置0

- 代表文件

d 代表目录

位置1-3(当前用户)

r 可读;w 可写;x 可执行

位置4-6(当前用户所在的组)

r 可读;w 可写;x 可执行

位置7-9(其他用户的权限)

r 可读;w 可写;x 可执行

-代表0

drwx都是代表1

如:rw-r--r--表示当前用户可读可写,用户所在组可读,其他用户可读。对应的十进制值为 6 4 4。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值