flash as3向php发送二进制数据,通过php保存成图片。

AS端:

 package
{
import com.JPEGEncoder.JPGEncoder;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.utils.ByteArray; /**
* ...
* @author Frost.Yen
*/
public class FlashSend extends Sprite
{
private var ldr:Loader = new Loader ;
private var bmp:Bitmap;
private var scale:Number = 1;//对象缩放比例
public function FlashSend()
{
ldr.load(new URLRequest("11.jpg"));
//图片地址;
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,onImageLoaded);
} private function onImageLoaded(e:Event):void
{
bmp = e.target.content as Bitmap;
/** 对象的缩放和visible不影响二进制数据的发送和图片的生成,但是如果对象存在遮罩和注册点不在左上角的情况会对图片的生成有影响**/
//bmp.scaleX = bmp.scaleY = scale;
//bmp.visible = false;
addChild(bmp); sendToPHP(creatBitmapData(bmp,bmp.width * scale,bmp.height * scale));
}
//向php发送数据;
}; private function creatBitmapData(obj:DisplayObject,_width:Number,_height:Number):BitmapData
{
var bitmapdata:BitmapData = new BitmapData(_width,_height,false,0xffffff);
bitmapdata.draw(obj);
return bitmapdata;
}
private function sendToPHP(bitmapdata:BitmapData):void
{ var jpgEncoder:JPGEncoder = new JPGEncoder(80);
var jpgStream:ByteArray = jpgEncoder.encode(bitmapdata);
var jpgURLRequest:URLRequest = new URLRequest("http://localhost:8181/FlashSendToPHPToSaveJPG/toSaveJPG.php");//php地址
jpgURLRequest.data = jpgStream;
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.contentType = "application/octet-stream";
var jpg_loader:URLLoader = new URLLoader ;
jpg_loader.dataFormat = URLLoaderDataFormat.BINARY;
jpg_loader.load(jpgURLRequest);
} } }

php端:

 <?php
//$filename = $_GET[jpgname].".jpg";//要生成的图片名字 可在as代码里面的php地址后面加上?jpgname=image即可
$filename="image.jpg";//要生成的图片名字
$xmlstr = $GLOBALS[HTTP_RAW_POST_DATA];
echo $xmlstr;
if(empty($xmlstr)) $xmlstr = file_get_contents('php://input');
$jpg = $xmlstr;//得到post过来的二进制原始数据
$file = fopen($filename,"w");//打开文件准备写入
fwrite($file,$jpg);//写入
fclose($file);//关闭
?>

在此提供两个下载JPGEncoder.as和BitString.as类的地址:

http://download.csdn.net/source/3205224

http://code.google.com/p/as3corelib/ 使用其中的:com.adobe.images.JPEGEncoder

[ActionScript 3.0] AS利用ByteArray向PHP发送二进制数据生成图片的更多相关文章

  1. [ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据

    主类 HTTPSendPHP.as package { import com.JPEGEncoder.JPGEncoder; import com.fylib.httpRequest.HttpRequ ...

  2. [ActionScript 3.0] AS3 深入理解Flash的安全沙箱Security Domains

    简介 如果你还没有与复杂的的安全域(security domain)和应用程序域(application domain)问题打过交道,那么你真是个幸运的家伙.当你在加载外部内容(然后他们开始播放)的时 ...

  3. ActionScript 3.0 API 中的 Video 类

    注:这个类在Flash流媒体开发中使用的很频繁,在此记录一下它的使用方法. 包 flash.media 类 public class Video 继承 Video  DisplayObject  Ev ...

  4. [ActionScript 3.0] as3处理xml的功能和遍历节点

    as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象 ...

  5. [ActionScript 3.0] 正则表达式

    正则表达式: 正则表达式最早是由数学家Stephen Kleene在对自然语言的递增研究成果的基础上,于1956提出来的.具有完整语法的正则表达式,主要使用在字符串的格式的匹配方面上,后来也逐渐应用到 ...

  6. ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...

  7. [ActionScript 3.0] AS3.0 简单封装Socket的通信

    Socket服务器 package com.controls.socket { import com.models.events.AppEvent; import com.models.events. ...

  8. ActionScript 3.0 for the Lunder Algorithm

    package com.feiruo.Calendar.LunderCalendar { /* *@ClassName: package:com.feiruo.Calendar.LunderCalen ...

  9. [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    本文转自:http://www.cnblogs.com/artwl/p/3396330.html 近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0, ...

随机推荐

  1. 128. Longest Consecutive Sequence (HashTable)

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...

  2. Spring Data JPA + layui的前台分页插件layPage实现页面的分页

    一.后台代码: 1.1 controller层代码 @RequestMapping("/xxxxxx") public String showInformationCode(Str ...

  3. eval 是执行一段完整的js字符串代码,并将结果返回

    var strArray="[{"message1":{ "id": "-1","content": &quo ...

  4. 关于super关键字

    1.在Java中,有时会遇到子类中的成员变量或方法与父类中的成员变量或方法同名.此时父类的成员变量或方法就会被隐藏(可以理解为重写),如果还想要使用父类中的这个成员变量或方法,就需要用到super. ...

  5. jquery删除记录弹出提示框

    来自于<jquery权威指南> ------------------- 点击删除时,弹出提示框,并做相应的删除确定或取消 完整代码如下: <!DOCTYPE html PUBLIC ...

  6. 2.spark-streaming实战

    park Streaming--实战篇 摘要:      Sprak Streaming属于Saprk API的扩展,支持实时数据流(live data streams)的可扩展,高吞吐(hight- ...

  7. 关于设置了setMaxAge(0)而浏览器未成功删除Cookie的注意事项

    最近做了个系统,其中涉及到对Cookie的操作.当用户登录时,设置一些数据到Cookie中,用户登出系统的时候删除写入浏览器中的对应Cookie.问题就出在登出系统时,在firebug中看到需要删除的 ...

  8. Lucene.Net(转)

    出处:http://www.cnblogs.com/piziyimao/archive/2013/01/31/2887072.html 做过站内搜索的朋友应该对Lucene.Net不陌生,没做过的也许 ...

  9. java中super的用法

    在Java中,super关键字有2个用法,一个是访问父类的函数,一个是访问父类的变量,总体来说,就是一个功能,访问父类的成员. 代码如下: class Person { String name ; i ...

  10. C# JSON使用过程中开发的小工具

    我在用JSON的过程中,经常要去看一下JSON的结构,而JSON串大不部分时候都是未格式化的数据,一次我不得不用一些网页上的在线解析和格式化工具来进行格式化查看,但是这些网页有时候并不好用:因此就结合 ...