cocos2dx保存图片到相册

因为功能需求是分享微信和朋友圈,并且也可以保存到本地相册,所以图片先保存到本地应用里。"保存相册"功能 则保存图片到相册

Android:

1.需要权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 //保存文件到指定路径
    public static String saveImageToGallery(Context context, String bmpPath) {
        // 
        File imgFile = new File(bmpPath);
        if (!imgFile.exists()) {
            return "fail";
        }
        //插入图片到系统相册        
        try {
			MediaStore.Images.Media.insertImage(context.getContentResolver(), bmpPath, "分享图片", "茶馆分享图片");
			//保存图片后发送广播通知更新数据库
			Uri uri = Uri.parse(bmpPath);
			context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
			return "success";
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "fail";
    }

ios:

1.需要配置ios  info.plist

<key>NSPhotoLibraryAddUsageDescription</key>
<string>是否允许此APP保存图片到相册?</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>此 App 需要您的同意才能读取媒体资料库</string>

2.包含的头文件:

#import <Photos/Photos.h>
#import<AssetsLibrary/AssetsLibrary.h>

3.包含相应的类库: 

Photos.framework
AssetsLibrary.framework

4.代码:

MODULE_METHOD_FUN(SysModule::saveImageToGallery)
    {
        _funcCB = func;
        char*p=(char*)args.data();
        NSString *nsMessage= [[NSString alloc] initWithCString:p encoding:NSUTF8StringEncoding];
        NSURL *url = [NSURL fileURLWithPath:nsMessage];
        __block NSString *assetId = nil;
        
        ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];
        if (author ==kCLAuthorizationStatusRestricted || author ==kCLAuthorizationStatusDenied){
            //无权限 引导去开启
            NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
            if ([[UIApplication sharedApplication] canOpenURL:url]) {
                [[UIApplication sharedApplication] openURL:url];
            }
        }else{
            // 1. 存储图片到"相机胶卷"
            [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ // 这个block里保存一些"修改"性质的代码
                // 新建一个PHAssetCreationRequest对象, 保存图片到"相机胶卷"
                // 返回PHAsset(图片)的字符串标识
                PHAssetChangeRequest *createAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:url];
                assetId = createAssetRequest.placeholderForCreatedAsset.localIdentifier;
            } completionHandler:^(BOOL success, NSError * _Nullable error) {
                if (error) {
                    NSLog(@"保存图片到相机胶卷中失败");
                    CallBack("fail","保存图片到相机胶卷中失败");
                    
                }else{
                    NSLog(@"成功保存图片到相机胶卷中");
                    CallBack("success","成功保存图片到相机胶卷中");
                }
            }];
        }
        
        return "hasFunc";
    }

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将cocos图保存到电脑上,可以使用cocos2d-x引擎提供的截图功能和一些操作系统提供的截图工具。 1. 使用cocos2d-x引擎提供的截图功能 cocos2d-x引擎提供了一个`utils::captureScreen()`函数,可以将当前游戏场景截图并保存图片文件。以下是一个示例代码: ```cpp auto fileUtils = FileUtils::getInstance(); auto screenshot = utils::captureScreen(CC_CALLBACK_2(YourClass::onCaptureScreen, this), "screenshot.png"); ``` 其中,第一个参数是截图完成后回调的函数,第二个参数是保存的文件名。 在回调函数中,可以将截图保存到本地: ```cpp void YourClass::onCaptureScreen(bool succeed, const std::string& outputFile) { if (succeed) { auto fileUtils = FileUtils::getInstance(); auto fullPath = fileUtils->getWritablePath() + outputFile; fileUtils->renameFile(outputFile, fullPath); log("Screenshot saved to %s", fullPath.c_str()); } } ``` 这个示例代码将截图保存到了应用程序的可写路径下。 2. 使用操作系统提供的截图工具 在Windows操作系统中,可以使用“截图工具”(Snipping Tool)来截取屏幕上的图像。打开“截图工具”,选择需要截取的区域,然后点击“保存”按钮将截图保存图片文件。 在MacOS操作系统中,可以使用“截图”(Screenshot)来截取屏幕上的图像。按下“Command + Shift + 4”组合键,然后选择需要截取的区域,截图将保存在桌面上。 以上是两种常见的将cocos图保存到电脑的方法,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值