拍摄闪光灯中显示对象可见区域的快照
发布时间:2020-12-15 07:28:21 所属栏目:百科 来源:网络整理
导读:我在闪存(AS3)中有相机输入应用程序,我在上面绘制一些图形.我想拍摄舞台可见区域的图像快照,但只有视频是我在视频上绘制的图形.我想从图像快照中排除控件.我的显示对象布局如下: -stage --canvas (Sprite) ---video (Video) ---overlayed graphics (Sprites
我在闪存(AS3)中有相机输入应用程序,我在上面绘制一些图形.我想拍摄舞台可见区域的图像快照,但只有视频是我在视频上绘制的图形.我想从图像快照中排除控件.我的显示对象布局如下:
-stage --canvas (Sprite) ---video (Video) ---overlayed graphics (Sprites,MCs,Shapes) --controls (Buttons) 舞台大小是固定的,我想拍摄我的画布元素的所有内容的图像快照(相机输入视频和重叠图形,但不包括控件).当叠加的图形在舞台大小的范围内时,我能够使这个图像快照.我是这样做的: var bmpd:BitmapData = new BitmapData(canvas.width,canvas.height); bmpd.draw(canvas,new Matrix(1,1,canvas.x,canvas.y)); 但是,当我在画布上的视频上绘制的图形超出舞台显示区域的界限时,这会给我带来不必要的结果.如何仅在舞台内可见区域的范围内限制图像快照? 谢谢 解决方法
我过去所做的就是使用
as3corelib,它包含JPG(
JPGEncoder.as)和PNG(
PNGEncoder.as)图像文件的编码器类.这些类使得从显示对象创建图像文件变得非常容易.
这是我的一个程序中的代码,它使用FileReference将我整个舞台的.png及其所有子节点保存到本地磁盘. //Save Canvas Snapshot private function saveCanvasSnapshot():void { var bitmapData:BitmapData = new BitmapData(DropSwatch.controller.stage.stageWidth,DropSwatch.controller.stage.stageHeight); bitmapData.draw(DropSwatch.controller); var file:ByteArray = PNGEncoder.encode(bitmapData); var fileReference:FileReference = new FileReference(); fileReference.save(file,"DropSwatchCanvas.png"); } 在你的情况下,因为除了控件之外你想要所有的图层,你可以简单地使控件图层在绘制biamapData时不可见,然后让它们重新出现.然后使用PNGEncoder(或JPGEncoder)对bitmapData进行编码,将其分配给ByteArray并将byteArray保存为.png(或.jpg) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |