我有一个使用flash网络摄像头拍摄人物图像的信息亭。我们使用的是16:9相机,但我们需要的图像是4:3。所以我刚刚创建了舞台4:3并将视频添加到了它,并在Kiosk UI上解决了这个问题。
但是......我正在使用ExternalInterface通过base64编码的jpg将这些图像发送到javascript,这非常有用。但是,当我抓住视频帧发送时,它当然仍然是16:9。
所以我需要裁剪视频,这样当我抓住它时(或者它被添加到的显示对象),它只是4:3的图像。
我尝试过使用面具,但出于某种原因这是不可能的。
video = new Video(videoHeight, videoWidth); //backwards on purpose
video.x = -(videoWidth - stage.stageWidth) /2; //Center X
video.y = -(videoHeight - stage.stageHeight) /2; //Center Y
var maskSprite:Sprite = new Sprite();
maskSprite.graphics.drawRect(0,0,640,480);
video.mask(maskSprite);
有什么想法吗?
答案 0 :(得分:0)
屏蔽video
不会产生任何影响,因为draw
的{{1}}方法来自BitmapData
本身(不包括屏蔽)如果你把video
和掩码进入另一个video
并在Sprite
上使用draw
,然后掩码就可以了。
然而,最好的解决方案可能是调整Sprite
绘制的矩形。您也可能还想调整BitmapData
的宽度和高度:
BitmapData
基本上,您要为var bmd:BitmapData = new BitmapData(640, 480);
bmd.draw(video, null, null, null, new Rectangle(0, 0, 640, 480));
参数定义一个矩形,并将该矩形的大小设置为您尝试捕获的最终大小(和宽高比)。