Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js swf提取定义BitsLossless2不正确像素_Javascript_Node.js_Flash - Fatal编程技术网

Javascript node.js swf提取定义BitsLossless2不正确像素

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

我制作了一个库,从SWF文件中提取图像和二进制数据(
.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);