shareSDK如何只分享图片

shareSDK如何只分享图片,第1张

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

本文主要是针对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:content                                         images:@[image]                                            url:[NSURL URLWithString:webUrl]                                          Title:Title                                           type:SSDKContentTypeImage];

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

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

以上是内存溢出为你收集整理的shareSDK如何只分享图片全部内容,希望文章能够帮你解决shareSDK如何只分享图片所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1084624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存