·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3.0处理视频截图源代码示例(2)

时间:2013-08-01 09:12CuPlayer.com
运行下看看,基本没什么大的问题,当然那个标签比较麻烦,这个没关系,你要也好,不要也好,做法有很多。这只是基� � 到了这一步,基本上算是差不多了,在大体的框架上,就剩下预览与保存的做法了。 第一步:预览

      运行下看看,基本没什么大的问题,当然那个标签比较麻烦,这个没关系,你要也好,不要也好,做法有很多。这只是基础。


      到了这一步,基本上算是差不多了,在大体的框架上,就剩下预览与保存的做法了。

       第一步:预览

       在我们已经把视频,TileList组装完成后,就需要实现一个功能,就是我们需要重新预览下以前拍的照片,那么由此所引申出来的动作

必然就是我们需要点击在TileList里的小图,这一步很简单,我们先来玩一个TileList点击的小代码,后面就套一下,就很容易了。
      按照第二部分,认识TileList刚开始的那段小代码,新的代码如下:

  1. import fl.events.ListEvent; 
  2. var i:uint; 
  3. for(i=0;i<10;i++){ 
  4.   var tempMc:Object= new Object(); 
  5.   tempMc.label = “PIC“+i; 
  6.   tempMc.source = new mc(); 
  7.   lists.addItem(tempMc); 
  8.   
  9. } 
  10. lists.addEventListener(ListEvent.ITEM_CLICK,thumbClick); 
  11. function thumbClick(event:ListEvent):void{ 
  12.   trace(event.item.label); 
  13. } 

 
      从上面简单的代码,就能知道在TileList里单击其中的图标,该怎么去实现。

      好,那么重新我们回到原来的例子上,我们已经知道TileList点击怎么实现,那么我们需要在舞台上放一个空的实例,用于加载点击图

标后,传输过来的具体内容,我们这里只需要图,别的不需要。当然你可以同样传送其他信息。

      我的打算是新的预览实例放在X轴为340,Y轴为0,同时在舞台上再放一个BUTTON,实例名:down_btn,用于保存事件的触发
      预览的做法也是跟截图的做法一样,用Bitmap,和BitmapData,在前面的教程代码上继续加代码:

  1. import fl.events.ListEvent; 
  2. var review:Sprite; 
  3. function thumbClick(event:ListEvent):void { 
  4.   var bmd:BitmapData=new BitmapData(320,240); 
  5.   bmd.draw(event.item.source); 
  6.   var bit:Bitmap=new Bitmap(bmd); 
  7.   review = new Sprite(); 
  8.   addChild(review); 
  9.   review.x = 340; 
  10.   review.addChild(bit); 
  11.   //用于下载当前的图片 
  12.   //down_btn.addEventListener(MouseEvent.CLICK,downJpg); 
  13. } 


       这样,这部分的功能算是完成了,也不难。下一部分的内容在于把当前的图保存到本地上,这个有很多方法,我说的是其中一种,但是

大体的思路都是一样的。我先说下我的思路。
      还记得我以前写的Flash简易聊天室教程里的三板斧教程吗?这个主要讲的是FLASH里的数据传输到外部服务器的,这里我要保存图片,

那么也是把当前的图片数据传输出去,那么我们就需要CORDLIB里的一个类: JPGEncoder类,把当前的图片数据转化成ByteArray,传输出去,

如果你像我用的是PHP的话,就可以用PHP把ByteArray写到本地上,变回原来的图片。
 
       第二步:保存
       首先我们要去http://code.google.com/p/as3corelib/把JPGEncoder类下下来。

       然后下一步就是继续完成down_btn按钮触发的下载事件构造函数:downJpg 

  1. import flash.utils.ByteArray; 
  2. import com.adobe.encoding.JPEGEncoder; 
  3. function downJpg(event:MouseEvent):void { 
  4.   //?name=@@@@@@就是设置下载下来的图片名字,这个可以根据你自己想要的来修改。 
  5.   var url:String=“http://localhost/downjpg.php?name=testJpg.jpg“; 
  6.  
  7.   var bmd:BitmapData = new BitmapData(320,240); 
  8.   bmd.draw(review); 
  9.   //下载截图质量设置 
  10.   var jpgEncoder:JPEGEncoder=new JPEGEncoder(100); 
  11.   var myByteArray:ByteArray=jpgEncoder.encode(bmd); 
  12.   
  13.   //发送数据到PHP服务器端,然后自动弹出,我下面会提供一个PHP文件,供你测试,反正 
  14.   //根据我以前的做的很多东西来看,方法有N多。这是其中之一 
  15.   var header:URLRequestHeader = new URLRequestHeader (“Content-type“, “application/octet-stream“); 
  16.   var request:URLRequest=new URLRequest(url); 
  17.   request.requestHeaders.push(header);  
  18.   request.method=URLRequestMethod.POST; 
  19.   request.data=myByteArray; 
  20.   
  21.   var loader:URLLoader = new URLLoader(); 
  22.   navigateToURL(request, “_blank“); 
  23. } 


     PHP端的代码:

  1. if ( isset ( $GLOBALS[“HTTP_RAW_POST_DATA“] )) { 
  2.   $im = $GLOBALS[“HTTP_RAW_POST_DATA“]; 
  3.   header(’Content-Type: image/jpeg’); 
  4.   header(“Content-Disposition: attachment; filename=“.$_GET[’name’]); 
  5.   echo $im;  
  6. }  else echo ’An error occured.’; 
  7. ?> 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器