本文主要是针对cocos creator项目接入shareSDK后的截图分享问题

遇到的问题

  • Android只能分享sdcard下的图片
  • IOS图片必须要在Xcode左边目录里面,也就是必须在包里面
  • 我现在想要分享一个截图,截图是在游戏里面通过一些方法自己生成的,Android中生成的图片文件是在游戏的可写路径,不是sdcard,通常游戏引擎也不会支持直接截图存储到sdcard。IOS也是游戏的可写路径

解决方法

  • Android
    把图片拷贝到sdcard。要如何拷贝呢?从js层可以调到java层,我们用java把刚刚生成的图片拷贝出来。
    图片生成方法如下代码
Tools.screenShoot = function (func) {if (!cc.sys.isNative) return;if (CC_JSB) {var dirpath = jsb.fileUtils.getWritablePath() + 'ScreenShoot/';if (!jsb.fileUtils.isDirectoryExist(dirpath)) {jsb.fileUtils.createDirectory(dirpath);}var name = 'ScreenShoot-' + (new Date()).valueOf() + '.png';var filepath = dirpath + name;var size = cc.visibleRect;var rt = cc.RenderTexture.create(size.width, size.height);cc.director.getScene()._sgNode.addChild(rt);rt.setVisible(false);rt.begin();cc.director.getScene()._sgNode.visit();rt.end();rt.saveToFile('ScreenShoot/' + name, cc.ImageFormat.PNG, true, function () {cc.log('save succ');rt.removeFromParent(true);if (func) {func(filepath);}});}
};

这样得到一个屏幕截图,存储目录在可写路径里。最后返回的filepath这个值就是生成的截图的路径,我们使用js调用java的方法,将filepath传到java层,java拿到图片路径后,直接进行拷贝,代码如下:

public static void copyFile(String oldPath, String newPath) {try {int bytesum = 0;int byteread = 0;File oldfile = new File(oldPath);if (oldfile.exists()) { //文件存在时InputStream inStream = new FileInputStream(oldPath); //读入原文件FileOutputStream fs = new FileOutputStream(newPath);byte[] buffer = new byte[1444];int length;while ( (byteread = inStream.read(buffer)) != -1) {bytesum += byteread; //字节数 文件大小fs.write(buffer, 0, byteread);}inStream.close();}}catch (Exception e) {System.out.println("复制单个文件操作出错");e.printStackTrace();}}

这个是静态方法,在js层调用java或者直接在java层调用,把图片复制到sdcard目录下,也可以放到别的目录

copyFile(filepath, "/sdcard/shareImg.png");

这样图片就在sdcard目录下了,可以使用shareSDK的相关方法进行分享。

  • IOS
    虽然shareSDK自带截图分享功能,但是shareSDK的截图分享功能是针对一般的手机应用,游戏的渲染和原生应用的渲染原理不一样,渲染层也不一样,所以shareSDK截图总是截出黑图或者透明图。
    ios和android图片分享api不同,android使用setImagePath(imgPath),传入的是图片的路径,ios传入的图片的数据,所以我们只要在ios层把图片的数据读出来再传入就可以了,代码如下:
UIImage * image = [[UIImage alloc] initWithContentsOfFile:imgUrl];[shareParams SSDKSetupShareParamsByText:contentimages:@[image]url:[NSURL URLWithString:webUrl]title:titletype:SSDKContentTypeImage];

imgUrl还是在js层获取到的图片路径filepath,这样就可以分享ios截图了。
shareSDK只分享图片的功能,有以上这两个引导应该可以满足很多需求了。

如果有什么不懂的或者其他需求,可以在下方留言。

shareSDK如何只分享图片相关推荐

  1. 使用ShareSDK分享图片(只分享图片)

    在使用ShareSDK的时候,遇到的有一个问题是要在QQ上分享图片,但是有个问题是无法分享图片,只能分享个网址,点击打开是个网址,这就很尴尬了.终于在Mob客服Water?那找到了解决方法 其他步骤按 ...

  2. ShareSDK 第三方平台分享参数说明

    本文介绍使用 ShareSDK 时,各个社交平台的分享情况说明 新浪微博分享规则 新浪微博支持分享类型: 应用内分享: 文字,文字+图片,链接 客户端分享:文字,文字+图片,链接,视频,多图(只支持本 ...

  3. ShareSDK Android端分享与授权示例代码

    本文意在提供更便捷的分享和授权代码,仅供参考,希望可以给你带来更愉快的开发心情: 分享 分享分为两种方式:第一种通过OneKeyShare一键九宫格分享,第二种指定平台分享 一键九宫格分享多个平台 一 ...

  4. 小程序---canvas画图,生成分享图片,画图文字换行

    小程序目前只支持转发,不支持分享朋友圈,为了能实现分享,很多线上小程序通过生成分享图片,保存到相册来给用户增加分享的可能. 具体思路及简要代码如下: 一:canvas画图drawCanvas:func ...

  5. 微信小程序生成分享图片踩坑大计划

    微信小程序有个非常好的缺点,就是分享不能分享到朋友圈,怎么办呢,那只好生成图片,图片里面加个小程序码. 效果图 但不过其中有坑大家注意啦 HTML代码,我这个是不显示图片的生成图片,所以canvas设 ...

  6. android后台通过View生成分享图片

    原文地址:http://www.jianshu.com/p/33e30da0385c 最近工作特忙,好久没静下心总结一些开发中的心得,后面会陆续写一些文章总结一下最近遇到的问题和一些收获吧- 闲话少说 ...

  7. 看似简单的任务-分享二维码图片到微信(分享图片的生成)

    1.任务描述 大体场景是这样的:移动支付中的被扫模式(收款方生成二维码)的二维码分享给好友进行识别支付:考虑到模板样式的多端一致性.多样性.可配置性等特点,所以生成分享图片的功能有java服务端进行实 ...

  8. css 设置背景图一半_img只显示图片一部分 或 css设置背景图片只显示图片指定区域...

    17:14 2016/3/22 img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片 ...

  9. android 生成推广图片保存_android后台通过View生成分享图片

    最近工作特忙,好久没静下心总结一些开发中的心得,后面会陆续写一些文章总结一下最近遇到的问题和一些收获吧- 闲话少说,今天想跟大家分享的是,在android中,如何后台将一个view绘制成图片,并简单梳 ...

最新文章

  1. 复杂性系统面临的难题
  2. struts2学习笔记(二):Struts2配置
  3. 总结 | 计算机视觉领域最常见几中损失函数
  4. httpservlet获取请求端IP地址
  5. 独家下载 |《领军行业大数据及AI实战》解锁九大行业领军企业云上大数据及AI实战
  6. 010 、JVM实战总结: 动手实验:亲自感受一下线上系统部署时如何设置JVM内存大小
  7. 上海自考计算机应用基础实践,2001年4月份全国高教自考计算机应用基础试题及答案...
  8. 解决 批处理 for 体内的字符串截取问题
  9. excel小技巧1:修改的日期格式为什么要双击一下单元格才能变
  10. 受欢迎的牛+Trajan缩点+树形dp
  11. 【JS】388- 深入了解强大的 ES6 「 ... 」 运算符
  12. 面试相关(技术汇总)
  13. LinuxStudyNote(39)-Linux软件包管理(1)-Linux软件包简介之源码包与RPM包、源码包的优缺点、RPM二进制包的优缺点
  14. php搭建markdown云笔记_Typora+坚果云:支持markdown的云笔记搭建
  15. 基于JSP的游泳馆管理系统的设计
  16. 逻辑回归实现数字手写识别
  17. java 上传文件-生成文件首页缩略图 生成pdf 抓取图片
  18. 重磅!李沐「动手学深度学习」中文课程笔记来了!
  19. checkbox 点击搜索失去焦点_jquery获取焦点和失去焦点事件代码
  20. Day134-136.尚品汇:平台属性接口、SPU、跨域问题、配置持久化、MinIO 分布式文件存储系统

热门文章

  1. 瑞晟微电子 笔试后记
  2. 小学计算机趣味知识,小学生电脑课上都学哪些知识和操作?
  3. 禅道提bug页面-修改重现步骤的默认模板
  4. 2019年TI杯 简易电路特性测试仪 制作过程(6)——测量任务分析(Av、fH) 20/05/01
  5. 笑死!程序员延寿指南开源了
  6. 基于snownlp及朴素贝叶斯的情感分析——以大众点评网评论为例
  7. 电子邮箱格式怎么写?你知道电子邮箱格式都有哪些吗?
  8. Django POST CSRF verification failed. Request abor
  9. 康永,给残酷社会的善意短信
  10. FileReader FileInputStream InputStreamReader BufferedReader 作用与区别