【求助】3.6.1截图后保存图片。截图成功了,但保存的图片是黑色的

  • Creator 版本:3.6.1

  • 目标平台:web-mobile

试着写了一下截图后保存截图的代码。看了很多论坛上的文章,最终抄抄写写终于完成了截图功能。
但对截图后的图片保存时,生成的base64一直都显示是黑色的图片。
到底是什么原因,要怎么解决呢?

以上是执行截图后,成功把截图显示在页面上
但根据传递给这个spriteframe的Render Texture去生成64base,就一直显示是黑色的图片

以下是源码
ScreenCapture.rar (2.1 MB)

//=====================================

不好意思,上面源码发错了,发了之前3.4的
我补一个3.6.1版本的
ScreenCapture3.6.rar (2.8 MB)

1赞

wx.saveImageToPhotosAlbum

微信小游戏的api我知道,但我这个还要输出web端,所以不能都用wx.saveImg


这是3.4.0版本RenderTexture.prototype.readPixels的代码,后续的版本修复了。所以改下你的getImgBase1函数里面readPixels的调用,把readPixels根据源码重写一份。最后注意RenderTexture的宽高有小数也是会出问题的,所以对宽高也要取整(虽然你这里的宽高刚好是整数)

分平台判断处理下

我是用2.4.x的 之前做保存时 web正常但是小游戏有问题 具体是创建了一个canvas然后把Texture2D赋给摄像机的targetTexture属性 然后把image传给Texture2D的initWithElement方法 微信小游戏端先用toTempFilePathSync得到临时路径 最后用saveImageToPhotosAlbum保存 完事 到现在没发现有异常 可以试试看

嗯嗯 到时候如果上微信,应该会把一些细节再改改,然后直接在微信工具里接微信的api
你说的2.4的方法,我去看看,但好像接口已经改了,我看看能不能用…

嗯 我去翻了3.6的源码了,确认已经修复了。但依然是之前的问题,还是只出来黑色的图片

我找到问题在哪了,但我不知道为什么。有大牛看到的话,可以解释一下吗

问题在预览模式,我用的是chrome浏览器预览。
如果在chrome的调试模式下设为移动端预览,保存的图就是黑色的;
如果关闭toggle device,就可以保存成功


这是用在chrome调试中开启了 toggel device,保存的图片是纯黑的


这是用在chrome调试中关闭了toggle device, 保存的图片就是正常的

得了 我找到问题了。。。 不是chrome调试模式的问题,是好像移动端的都不行。。。

还是前面说过的问题之一——RenderTexture宽高必须取整问题,在reset的时候就必须取整了,否则readPixels使用还是有问题(就算你传入的是整数)。
修改如下:

喔喔 原来这样!!

大佬,想请教一下截图的效果在2.4.9的时候可以正常运行,后面升级引擎后就无法在安卓上使用了。构建后发现报错,这个问题我又找不到具体产生的原因。可以帮忙看看吗{{64OUWC@{UCXF$3T{SCDHJ

请问一下这个截图在安卓原生上能使用吗
安卓原生上如何实现把截图转换成base64格式代码呢