MaskData 将数据隐藏到图片中
它是什么
- 它通过LSB算法将数据写入图片, 并在客户端运行时将数据解析成对象, 可用于隐藏数据文件.
- 它提供二进制序列化算法, 对数据进行(反)序列化处理, 支持Node和CocosCreator脚本.
- 由于LSB对裁剪和压缩比较敏感, 所以并不适合用于版权保护, 如果需要可使用 隐形水印.
开发环境
- 引擎版本: Cocos Creator 2.4.11 & 3.8.0
- 编程语言: TypeScript
- 版本支持: 2.x | 3.6.x | 3.7.x | 3.8.x
如何使用
- node side
// 序列化对象
const buffer = Hide2img.serialization({});
// 将二进制数据写入图片
Hide2img.encode(buffer, imgpath).then(()=> {
console.log(`encimg: => ${encimg}`);
}).catch(e => {
console.error(e.message);
});
- ccc side
// 从Texture解析出隐藏的数据
const buffer = Hide2Texture.decode(texture);
// 反序列化
const obj = Hide2Texture.deserialization(buffer);
console.log(`obj: => ${obj}`);
CCC接口
// 将数据写入Texture
encode(buffer: ArrayBuffer, texture: cc.Texture2D): Uint8Array | null
// 从Texture中解析数据
decode(texture: cc.Texture2D): ArrayBuffer | null
// Texture中可容纳数据大小
capacity(texture: cc.Texture2D): number
// 序列化对象
serialization(obj: object): ArrayBuffer
// 反序列化
deserialization(buffer: ArrayBuffer): object
Node接口
// 将数据写入图片
encode(buffer, imgpath)
// 从图片中解析数据
decode(imgpath)
// 图片中可容纳数据大小
capacity(imgpath)
// 序列化对象
serialization(obj)
// 反序列化
deserialization(buffer)
Node实现依赖canvas库, 在write2img文件夹下执行npm install.