Javascript node.js swf提取定义BitsLossless2不正确像素
我制作了一个库,从SWF文件中提取图像和二进制数据(Javascript node.js swf提取定义BitsLossless2不正确像素,javascript,node.js,flash,Javascript,Node.js,Flash,我制作了一个库,从SWF文件中提取图像和二进制数据(.bin) 但是对于definebitsless2tag(PNGimages with alpha),我有一个问题:一些像素不在正确的位置,但是其他的OK 下面是我当前使用库进行图像处理的代码(用Typescript编写)(我还尝试了node canvas,同样的事情) private async definebitsless2(buff:SWFBuffer,tag:any,tagHeader:any,Callback:Function){ v
.bin
)
但是对于definebitsless2
tag(PNG
images with alpha),我有一个问题:一些像素不在正确的位置,但是其他的OK
下面是我当前使用库进行图像处理的代码(用Typescript
编写)(我还尝试了node canvas
,同样的事情)
private async definebitsless2(buff:SWFBuffer,tag:any,tagHeader:any,Callback:Function){
var id=buff.readUIntLE(16);
var format=buff.readUInt8();
变量宽度=buff.readUIntLE(16);
变量高度=增益读数(16);
var data=buff.buffer.slice(buff.pointer,(buff.pointer+tagHeader.length)-7);
buff.addPointer(tagHeader.length-7);
如果(格式!=5){
抛出新错误(`Unsupported DefineBitsLossless2 image format.Only format 5受支持,Get format${format}`);
}
var GZBuffer=this.concatSWFHeader(zlib.unzipSync(数据),data);
var图像=等待新Jimp(宽度、高度);
var位置=0;
对于(变量y=0;y
以下是我用于测试的结果:
使用我的库:
使用FFDec(Java中的免费Flash反编译器)
我跟随创建了我的库(参见144
页面了解definebitsless2
tag)
我的代码怎么了?我相信:
var GZBuffer = this.concatSWFHeader(zlib.unzipSync(data), data);
应改为:
var GZBuffer = zlib.unzipSync(data);
不确定您使用的是
concatSWFHeader
,但这更像是您正在添加的ZLIB头的一部分,它应该考虑到整个图像偏移了2个像素。正在工作!谢谢你
var GZBuffer = zlib.unzipSync(data);