[AS3]将影片剪辑生成图片保存到服务器(附php和java版)代码
借助as3Corelib包中的PNGEncoder类来将flash中的影片剪辑生成透明图片(没有as3Corelib的可以从其官网下载到),将图片打包成二进制流数据发送到服务器
这里借助as3Corelib包中的PNGEncoder类来将flash中的影片剪辑生成透明图片(没有as3Corelib的可以从其官网下载到),将图片打包成二进制流数据发送到服务器,在这里,小雨用php来接收flash发送过来的数据,并将数据保存为png图片存放入服务器。主要代码如下:
flash端:
- import flash.display.BitmapData;
- import flash.display.MovieClip;
- import flash.display.Sprite;
- import flash.events.*;
- import flash.net.*;
- import flash.utils.ByteArray;
- import com.adobe.images.PNGEncoder;
- /**创建xmc影片剪辑对应的位图数据对象**/
- var pngSource:BitmapData = new BitmapData (xmc.width, xmc.height);
- pngSource.draw(xmc);
- /**创建图片对应的字节流**/
- var pngStream:ByteArray = PNGEncoder.encode(pngSource);
- /**设置数据头信息**/
- var header:URLRequestHeader = new URLRequestHeader("Content-type","application/octet-stream");
- /**设置请求链接和图片文件名称**/
- var pngURLRequest:URLRequest = new URLRequest("png_encoder_download.php?name=diy"+new Date().getMilliseconds()+".png");
- pngURLRequest.requestHeaders.push(header);
- pngURLRequest.method = URLRequestMethod.POST;
- pngURLRequest.data = pngStream;
- var loader:URLLoader = new URLLoader(pngURLRequest);
- /**发送数据请求**/
- loader.load(pngURLRequest);
- /**添加数据发送结束的事件处理,服务器返回的数据会放入loader的data属性中**/
- loader.addEventListener(Event.COMPLETE,loaded_Handler);
php端保存方式:png_encoder_download.php文件
- <?php
- if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
- {
- // 得到 byteArray 数据
- $png = $GLOBALS["HTTP_RAW_POST_DATA"];
- /**写到服务器的images文件夹下**/
- $file = fopen("images/".$_GET['name'],"w");//打开文件准备写入
- fwrite($file,$png);//写入
- fclose($file);//关闭
- /**返回信息**/
- echo "ok";
- }
- ?>
java端保存方式:
- <%@ page contentType="text/html; charset=utf-8" language="java"%>
- <%@ page import="java.util.*"%>
- <%@ page import="java.io.*"%>
- <%
- int v;
- String filePath = request.getRealPath(System.currentTimeMillis()+".jpg");
- BufferedInputStream inputStream = new BufferedInputStream(request.getInputStream());
- FileOutputStream outputStream = new FileOutputStream(new File(filePath));
- byte [] bytes = new byte[1024];
- while((v=inputStream.read(bytes))>0){
- outputStream.write(bytes,0,v);
- }
- outputStream.close();
- inputStream.close();
- %>
look,so easy!
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...