rendertexture截图下来的图为什么无法缩小

原本是这样:
t = cc.RenderTexture.create(100,100)
t.begin()
node._sgNode.visit()
t.end()
t.saveToFile
我想缩小到60%,尝试了一下几种都不行

t = cc.RenderTexture.create(60,60)
node.scale = 0.6
t.beigin()

t = cc.RenderTexture.create(60,60)
node.width = 60
t.beigin()

t = cc.RenderTexture.create(100,100)
t.beign
t.end
t.scale = 0.6
t.saveToFile

都不行,只能缩小贴图,但是里面的内容还是原始比例
请问要如何解决

试看看下面这种写法

var t = cc.RenderTexture.create(100,100)
t.setScale(0.6) || t.setScale(0.6, 0.6);

你好,试了没有用。
其实我就想用anysdk分享一个微信的游戏截图。
他需要一个缩略图,而且有文件大小限制,大概500K。
我们的分辨率是1920*1080,截屏下来有3M左右,所以必须缩小了传。

缩略图显示32K 没有500那么大

你能生成缩略图吗?

我也遇到这个问题,请问解决了吗

解决不了,我下午准备自己做个OC的缩略图接口。
那个ANYSDK很奇怪,OC的要缩略图,ANDROID只用尺寸就好了。我之前微信是手接的,直接在OC和JAVA中处理好缩略图就行了。搞那么麻烦

1赞

能发下处理的代码吗?学习一下

代码在我的MAC,这儿没有,就几句代码。
大概可以看下这类的帖子
http://xbiii3s.iteye.com/blog/1188008
就是OC UIIMAGE的缩放操作

android也有类似的代码,也是对image直接做缩放就好了

creator里有缩放图片api吗?

反正我没找着,折腾了很久都不行

我也有同样的问题,微信分享图片需要缩略图,然而好像没有缩放图片的api

怎么缩小,解决了吗?

来个土办法

var SCREEN_SHOOT_SHARE = “ScreenShootShare.jpg”//截屏分享图片名
var SCREEN_SHOOT_SHARE_SCALE = “ScreenShootShareScale.jpg”//截屏分享图片名
//截取屏幕
screenShoot: function() {
if (!cc.sys.isNative){
Utils.showToast(“只有APP版可以使用微信功能~”,2)
return
}
var self = this;
var filepath = SCREEN_SHOOT_SHARE;//图片最后存储路径
var size = cc.winSize;//屏幕size
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();
cc.log('screenShoot ~~~~~~~~~~~~ = ’ + filepath)
rt.saveToFile(filepath, cc.ImageFormat.JPG, false, function() {
//截屏成功回调
rt.removeFromParent();

        setTimeout(function(){
            self.makeWeChatSharePic(filepath,SCREEN_SHOOT_SHARE,0.35)
            self.makeWeChatSharePic(filepath,SCREEN_SHOOT_SHARE_SCALE,0.08)
        },10)
    });

},

缩放图片
makeWeChatSharePic: function(filePath,name,scale) {
if (!cc.sys.isNative)return;//只支持native
var self = this;
var m_filepath = jsb.fileUtils.getWritablePath()+filePath;//图片最后存储路径
var size = cc.winSize;//屏幕size
var rt = cc.RenderTexture.create(size.widthscale, size.heightscale);
//开始绘制截屏
cc.director.getTextureCache().removeTextureForKey(m_filepath);

    var m_node = Utils.createCustSprite(m_filepath)
    m_node.setAnchorPoint(cc.p(0,0))
    cc.director.getScene().addChild(m_node)
    m_node.scale = scale
    m_node._sgNode.addChild(rt);
    rt.setVisible(false);
    rt.begin();
    m_node._sgNode.visit();
    rt.end();
    m_node.active = false
    rt.saveToFile(name, cc.ImageFormat.JPG, false, function() {
        //截屏成功回调
        rt.removeFromParent();
        m_node.removeFromParent();
        if (name == SCREEN_SHOOT_SHARE_SCALE) {
            var path = jsb.fileUtils.getWritablePath() + SCREEN_SHOOT_SHARE
            var thumbPath = jsb.fileUtils.getWritablePath() + SCREEN_SHOOT_SHARE_SCALE
            self.wechatSharePic(path,thumbPath)
        };
    });

},

手动创建精灵的方法
createCustSprite: function(filePath){
var node = new cc.Node();
var sp = node.addComponent(cc.Sprite);
var tex = cc.director.getTextureCache().addImage(filePath)
var frame=new cc.SpriteFrame(tex);
sp.spriteFrame = frame;

    return node
},

貌似可以通过RenderTexture.setVirtualViewport 获得小尺寸贴图