Actionscript 3 我的拜占庭不是';t型保持过滤器

Actionscript 3 我的拜占庭不是';t型保持过滤器,actionscript-3,Actionscript 3,我有一个RTMP流,我需要截图。我使用bitmapData.draw()时遇到了一个安全错误,因为它来自AWS S3,所以我找到了一个解决方法,可以拍摄视频的屏幕截图: var bitmap = new Bitmap(); var graphicsData : Vector.<IGraphicsData>; graphicsData = container.graphics.readGraphicsData(); //-- container is a s

我有一个RTMP流,我需要截图。我使用
bitmapData.draw()
时遇到了一个安全错误,因为它来自AWS S3,所以我找到了一个解决方法,可以拍摄视频的屏幕截图:

var bitmap = new Bitmap();              
var graphicsData : Vector.<IGraphicsData>;
graphicsData = container.graphics.readGraphicsData(); //-- container is a sprite that holds my video element                
bitmap.bitmapData = GraphicsBitmapFill(graphicsData[0]).bitmapData;
var image:ByteArray = new JPGEncoder(85).encode(bitmap.bitmapData);

道具
对象可能看起来像:
{对比度:0.5,饱和度:1}

好的,我自己通过Jack Doyle(GSAP作者)给我的一点建议解决了这个问题。我在代码注释中描述了我的不同做法:

var graphicsData:Vector.<IGraphicsData>;
graphicsData          = container.graphics.readGraphicsData();              
var origBitmap:Bitmap = new Bitmap();   
origBitmap.bitmapData = GraphicsBitmapFill(graphicsData[0]).bitmapData;

//-- at this point I have a screenshot of the video

var props:Object = {};
for (var i:String in currentEffects)
{
  props[currentEffects[i].effect] = currentEffects[i].amount;
}
TweenLite.to(origBitmap,0,{colorMatrixFilter:props});

//-- at this point I've reapplied the effects.
//-- originally, sending bitmap.bitmapData to the encoder didn't retain the filters so I went 1 step further

//-- create a new bitmapData and draw the reapplied filter'd bitmap
var filteredBitmapData:BitmapData = new BitmapData(640,360);
var filteredBitmap:Bitmap = new Bitmap(filteredBitmapData);
filteredBitmapData.draw(origBitmap);

//-- encode the new bitmap data
var image:ByteArray = new JPGEncoder(85).encode(filteredBitmapData); //-- filteredBitmapData is now filtered and I can send this to the server
var图形数据:向量。;
graphicsData=container.graphics.readGraphicsData();
var origBitmap:Bitmap=新位图();
origBitmap.bitmapData=GraphicsBitmapFill(graphicsData[0]).bitmapData;
//--在这一点上,我有一个视频截图
var props:Object={};
for(变量i:currentEffects中的字符串)
{
道具[currentEffects[i]。效果]=currentEffects[i]。金额;
}
to(origBitmap,0,{colorMatrixFilter:props});
//--在这一点上,我重新应用了效果。
//--最初,将bitmap.bitmapData发送到编码器时没有保留过滤器,因此我更进一步
//--创建新的位图数据并绘制重新应用的过滤器位图
var filteredBitmapData:BitmapData=新的BitmapData(640360);
var filteredBitmap:Bitmap=新位图(filteredBitmapData);
filteredBitmapData.draw(origBitmap);
//--对新位图数据进行编码
var image:ByteArray=new-JPGEncoder(85).编码(filteredBitmapData);//--filteredBitmapData现在已被筛选,我可以将其发送到服务器

@null啊,我应该把它贴出来的。将其添加到问题OK中,以便对容器应用一些粗花呢过滤器。您尝试将筛选器应用于bitmapData的结果如何?@null,与forloop和tweenlite调用相同,但我尝试的不是容器
bitmap
graphicsData
graphicsData[0]
bitmap.bitmapData
var graphicsData:Vector.<IGraphicsData>;
graphicsData          = container.graphics.readGraphicsData();              
var origBitmap:Bitmap = new Bitmap();   
origBitmap.bitmapData = GraphicsBitmapFill(graphicsData[0]).bitmapData;

//-- at this point I have a screenshot of the video

var props:Object = {};
for (var i:String in currentEffects)
{
  props[currentEffects[i].effect] = currentEffects[i].amount;
}
TweenLite.to(origBitmap,0,{colorMatrixFilter:props});

//-- at this point I've reapplied the effects.
//-- originally, sending bitmap.bitmapData to the encoder didn't retain the filters so I went 1 step further

//-- create a new bitmapData and draw the reapplied filter'd bitmap
var filteredBitmapData:BitmapData = new BitmapData(640,360);
var filteredBitmap:Bitmap = new Bitmap(filteredBitmapData);
filteredBitmapData.draw(origBitmap);

//-- encode the new bitmap data
var image:ByteArray = new JPGEncoder(85).encode(filteredBitmapData); //-- filteredBitmapData is now filtered and I can send this to the server