sprite-core icon indicating copy to clipboard operation
sprite-core copied to clipboard

是否可以添加自定义滤镜定义途径?

Open huzunjie opened this issue 7 years ago • 2 comments

https://github.com/spritejs/sprite-core/blob/16e863f4bb8a4c007879ebe22e61a881b56ef57d/src/sprite.js#L234

比如在sprite上约定一个自定义滤镜函数的属性(比如 customFilter(r, g, b, a, imageData)=>{ ... 这里是滤镜处理过程... } ),这样就可以在drawImage后针对贴图进行像素处理:

const imgRect = cvs.getImageData(...rect);
const imgData = imgRect.data;
for(var i=0; i<imgData.length; i+=4){
  customFilter(imgData[i], imgData[i+1], imgData[i+2], imgData[i+3], imgData, imgRect);
}
cvs.putImageData(imgRect,...rect)

负面影响:缓存策略需要考虑修改,避免出错。

huzunjie avatar Mar 29 '18 05:03 huzunjie

这个我想一下,应该可以的,缓存也可以解决

akira-cn avatar Mar 29 '18 09:03 akira-cn

考虑了一下主要是性能问题,像微信这种没有缓存的环境会有点吃不消,其实可以直接用

const image = await spritejs.Resource.loadTexture(src) 

拿到图片,然后先处理掉,接着直接作为texture用在Sprite上就可以了

akira-cn avatar Mar 30 '18 13:03 akira-cn