经验分享:Creator 原生平台截屏方案

请问能控制最后生成的图片的大小吗,现在我们的设计分辨率的长边到了2048,截个全屏出来有好几M,格式改成JPG后还有快1M,还是太大了,请问有办法把这张jpg的分辨率弄小一些吗?

坐等修复左下角的问题。。。好蛋疼。。。现在有时还跑去右上角 真不听话

大大们,请问能控制最后生成的图片的大小吗,现在我们的设计分辨率的长边到了2048,截个全屏出来有好几M,格式改成JPG后还有快1M,还是太大了,请问有办法把这张jpg的分辨率弄小一些吗?

gl.DEPTH24_STENCIL8_OES 变量在creator1.5以上就不存在这个参数了,所以mask截图还是会出现背影一片白的情况

我想目前应该没办法控制生成图片的大小,

是吗?我用1.6beta3,还是正常的啊,截出来的图能有背景透明的

这个参数只有在原生平台才会有,web平台为undefined

子龙大师,请问怎么截取一个位置处于屏幕中间的特定的节点的小图片?而不是截取全屏大小的图片。现在发现截屏只能从屏幕的左下角开始。如果将RenderTexture的大小设置为被截屏的小图尺寸,截屏的结果就会是全白空的。需要RenderTexture的尺寸为全屏尺寸,才能截屏全部。但是保存下来的图片也会是屏幕那么大。求回复!!!

解决了吗?

@zilong 你好,我截屏时用了 cc.RenderTexture.create(1280,640, cc.Texture2D.PIXEL_FORMAT_RGBA8888, gl.DEPTH24_STENCIL8_OES) 这些参数,因为有mask
用的cc.ImageFormat.JPG ,文件名也是.jpg,在模拟器是 ok 的,但是anysdk 微信分享之后用电脑收到文件变成 png 了,而且文件比较大(模拟器上换 jpg 后查看图片已经变小了)
请问下是怎么回事

我是 cocos v1.6.1-beta.2 + ios

没有,没人搭理,这个是以前cocos - js 就有的bug。
国外的cocos-iphone引擎是可以做到的

Creator 做一个标准方案吧

@zilong 你好,我用你 demo 的截屏代码,creator 1.6.1,Android 截屏的图只显示了一小部分node,还有整个背景都是黑色的,这是什么问题呢

代码跟你的一样 还是显示在左下角呢

//把 renderTexture 添加到场景中去,否则截屏的时候,场景中的元素会移动
this.richText.node.parent._sgNode.addChild(renderTexture);
//把 renderTexture 设置为不可见,可以避免截图成功后,移除 renderTexture 造成的闪烁
renderTexture.setVisible(false);

添加了这二句 node截图内容跑偏 不全

其实这是基本需求,强烈建议官方提供方法

截图要在渲染后的下一帧才不会跑偏,

不晓得 2.0官方会不会支援…

非常感谢子龙山人的截屏代码,这几天我们项目引入这段代码带来了一个应用崩溃问题,报错信息贴在下面,后来把这段代码调整到scheduleOnce函数里面执行,似的截图功能能够在下一帧执行,就不会崩溃了。
崩溃信息如下:
I/DEBUG ( 165): #00 pc 0129f525 /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Renderer::fillVerticesAndIndices(cocos2d::TrianglesCommand const*)+757)
I/DEBUG ( 165): #01 pc 0129f6d1 /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Renderer::drawBatchedTriangles()+289)
I/DEBUG ( 165): #02 pc 0129fc6b /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Renderer::flushTriangles()+27)
I/DEBUG ( 165): #03 pc 0129fc9b /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Renderer::flush2D()+27)
I/DEBUG ( 165): #04 pc 0129fccc /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Renderer::flush()+28)
I/DEBUG ( 165): #05 pc 0129fe67 /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Renderer::processRenderCommand(cocos2d::RenderCommand*)+391)
I/DEBUG ( 165): #06 pc 012a0171 /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Renderer::visitRenderQueue(cocos2d::RenderQueue&)+465)
I/DEBUG ( 165): #07 pc 0129fe4c /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Renderer::processRenderCommand(cocos2d::RenderCommand*)+364)
I/DEBUG ( 165): #08 pc 012a0171 /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Renderer::visitRenderQueue(cocos2d::RenderQueue&)+465)
I/DEBUG ( 165): #09 pc 012a203d /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Renderer::render()+93)
I/DEBUG ( 165): #10 pc 011ffac5 /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Scene::render(cocos2d::Renderer*, cocos2d::Mat4 const&, cocos2d::Mat4 const*)+101)
I/DEBUG ( 165): #11 pc 01233f58 /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::GLView::renderScene(cocos2d::Scene*, cocos2d::Renderer*)+56)
I/DEBUG ( 165): #12 pc 0125d3ca /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Director::drawScene()+170)
I/DEBUG ( 165): #13 pc 0125d537 /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (cocos2d::Director::mainLoop()+55)
I/DEBUG ( 165): #14 pc 0031e2bc /data/app-lib/com.company.yx.company.test-1/libcocos2djs.so (Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeRender+28)

截屏的图一直都是黑色的啊,43k大小…

官方有解决了吗~