Loading... > 在使用微信机器人的时候遇到一个需要进行图片转发的场景,但是微信的图片都不是以图片的形式存储的,所以需要进行一次转换。 计算好偏移量然后利用node的`fs`模块即可 ```javascript //修改图片 let fs = require('fs'); let path = require('path'); //值是多少自己算。 let base = 0xFF; let next = 0xD8; let gifA = 0x47; let gifB = 0x49; let pngA = 0x89; let pngB = 0x50; let bmpA = 0x42; let bmpB = 0x4d; //convert let convert = (item,cb) => { console.log(item) let extname = '.jpg'; fs.readFile(item, (err,content) => { if(err){ console.log('解码失败:' + item); cb(null); }else{ let firstV = content[0], nextV = content[1], jT = firstV ^ base, jB = nextV ^ next, gT = firstV ^ gifA, gB = nextV ^ gifB, pT = firstV ^ pngA, pB = nextV ^ pngB; bT = firstV ^ bmpA; bB = nextV ^ bmpB; var v = firstV ^ base; if(jT == jB){ v = jT; extname = '.jpg'; }else if(gT == gB){ v = gT; extname = '.gif'; }else if(pT == pB){ v = pT; extname = '.png'; }else if(bT == bB){ v = bT; extname = '.bmp'; } let imgPath = path.join(path.dirname(item),path.basename(item)+extname); let bb = content.map( br => { return br ^ v }) fs.writeFileSync(imgPath,bb) // 直接往回调里传个图片地址,方便发送 cb(path.join(imgPath); } }) } module.exports = { convert } ``` 然后直接调用 ```javascript const decoder = require('./lib/decoder'); const path = require('path') decoder.convert(`${path.resolve(__dirname, '.')}\\3d21b0d1ab3d829da41ea93fcb976c1c.dat`, item => { console.log(item) }) ``` 最后修改:2022 年 10 月 05 日 © 允许规范转载 打赏 赞赏作者 支付宝 赞 0 如果觉得我的文章对你有用,请随意赞赏