cocos creator 怎么获取图片中某一点的RGB值

同样需求,我也太难了,你这问题1年了都没人解答.

我的解决办法比较另辟蹊径:用qq截图就可以

需要批量处理,查论坛,以前有readPixels方法,在原生cocos那套.
unity里也有获取纹理图片后readPixels()方法,这个应该是使用比较多的,不知道creator里为什么没找到.
实在不行,就只能去unity里做个工具,把图片信息读取后,导出json给creator用了.

你可真是个鬼才。。。

我的另外一个帖子,怎么才能根据texture去创建一个reanderTexture?又卡在这里了.

initWithSize 初始化 render texture
这个方法init后,只有texure的大小,不能传递纹理贴图进去.

initWithElement 用 HTML Image 或 Canvas 对象初始化贴图
只能用于web下.

initWithData 使用一个存储在 ArrayBufferView 中的图像数据(raw data)初始化数据。
我就是想读取raw data信息,没有raw data信息给它创建.

兜了一圈又回来了.

我不知道cocos有没有提供相关的方法,不过如果我有个思路,这整个游戏都是在canvas上绘制出来的,那么利用canvas提供的api应该可以达到想要的效果

鲁莽了,我试了,不行

如果通过绘制的 方法,可能有一些问题,因为有些图片要做预处理再绘制,关键就在预处理这一步要获得图片的信息pixel信息.

CCRenderTexture里有readPixels方法,不知道能不能满足你的需求

你去看看Image相关的api和数据,c++做的获取某点像素我是从image入手做的

:joy: creator没找到image相关的

咨询怎么把一张png图片转成CCRenderTexture类型的?

你好请问有具体的解决思路吗

https://docs.cocos.com/creator/manual/zh/render/camera.html#截图 参考下面的截图方案

代码在creator2.4.2浏览器console测试可行. 其它环境没测试.
像素值被记录到data里.

x = y = 0;
width = height = 1;
data = new Uint8Array(width * height * 4);
func = () => {
    cc.director.off(cc.Director.EVENT_AFTER_DRAW, func);
    gl = cc.game.canvas.getContext('webgl');
    gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, data);
}
cc.director.on(cc.Director.EVENT_AFTER_DRAW, func);

image
希望可以有帮助

2赞

我这边是直接黑屏了,this.cameraGraphics.render(this.node)报错,能看看你节点层级么?多谢!

楼主可以说下具体遇到的问题,让大家看看你的应用场景

着色器内是可以获取到每点的色值的