[ActionScript 3.0] AS利用ByteArray向PHP发送二进制数据生成图片

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

AS端:

 1 package
 2 {
 3     import com.JPEGEncoder.JPGEncoder;
 4     import flash.display.Bitmap;
 5     import flash.display.BitmapData;
 6     import flash.display.DisplayObject;
 7     import flash.display.Loader;
 8     import flash.display.Sprite;
 9     import flash.events.Event;
10     import flash.net.URLLoader;
11     import flash.net.URLLoaderDataFormat;
12     import flash.net.URLRequest;
13     import flash.net.URLRequestMethod;
14     import flash.utils.ByteArray;
15
16     /**
17       * ...
18       * @author Frost.Yen
19       */
20     public class FlashSend extends Sprite
21     {
22         private var ldr:Loader = new Loader  ;
23         private var bmp:Bitmap;
24         private var scale:Number = 1;//对象缩放比例
25         public function FlashSend()
26         {
27             ldr.load(new URLRequest("11.jpg"));
28             //图片地址;
29             ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,onImageLoaded);
30         }
31
32         private function onImageLoaded(e:Event):void
33         {
34             bmp = e.target.content as Bitmap;
35             /** 对象的缩放和visible不影响二进制数据的发送和图片的生成,但是如果对象存在遮罩和注册点不在左上角的情况会对图片的生成有影响**/
36             //bmp.scaleX = bmp.scaleY = scale;
37             //bmp.visible = false;
38             addChild(bmp);
39
40             sendToPHP(creatBitmapData(bmp,bmp.width * scale,bmp.height * scale));
41         }
42         //向php发送数据;
43     };
44
45     private function creatBitmapData(obj:DisplayObject,_width:Number,_height:Number):BitmapData
46     {
47         var bitmapdata:BitmapData = new BitmapData(_width,_height,false,0xffffff);
48         bitmapdata.draw(obj);
49         return bitmapdata;
50     }
51     private function sendToPHP(bitmapdata:BitmapData):void
52     {
53
54         var jpgEncoder:JPGEncoder = new JPGEncoder(80);
55         var jpgStream:ByteArray = jpgEncoder.encode(bitmapdata);
56         var jpgURLRequest:URLRequest = new URLRequest("http://localhost:8181/FlashSendToPHPToSaveJPG/toSaveJPG.php");//php地址
57         jpgURLRequest.data = jpgStream;
58         jpgURLRequest.method = URLRequestMethod.POST;
59         jpgURLRequest.contentType = "application/octet-stream";
60         var jpg_loader:URLLoader = new URLLoader  ;
61         jpg_loader.dataFormat = URLLoaderDataFormat.BINARY;
62         jpg_loader.load(jpgURLRequest);
63     }
64
65 }
66
67 }

php端:

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

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

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

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

时间: 2024-08-01 13:14:28

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

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

主类 HTTPSendPHP.as 1 package 2 { 3 import com.JPEGEncoder.JPGEncoder; 4 import com.fylib.httpRequest.HttpRequestBuilder; 5 import com.fylib.httpRequest.HttpRequestBuilderConsts; 6 import flash.display.Bitmap; 7 import flash.display.BitmapData; 8 impor

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

简介 如果你还没有与复杂的的安全域(security domain)和应用程序域(application domain)问题打过交道,那么你真是个幸运的家伙.当你在加载外部内容(然后他们开始播放)的时候,默认的设置工作的很好,你甚至不知道他们的存在. 但是某些时候你可能需要控制默认设置以外的更多行为和功能,这样你就会遇到前面所说的问题.你也许会困扰于Security.allowDomain和crossdomain.xml文件的区别,又或者你想要深究关于安全性的最佳实践.如果是这样,那么这篇文章就

[ActionScript 3.0] 正则表达式

正则表达式: 正则表达式最早是由数学家Stephen Kleene在对自然语言的递增研究成果的基础上,于1956提出来的.具有完整语法的正则表达式,主要使用在字符串的格式的匹配方面上,后来也逐渐应用到信息技术领域.不同的编程语言对于正则表达式有细微的不同,ActionScript 3.0是按照ECMAScript第3版语言规范(ECMA-262)中的定义实现正则表达式. 熟悉windows操作系统读者,应该知道windows中是怎样查找文件的.不错,使用通配符“*”用来匹配任意字符,“?”用来匹

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

as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象时,ActionScript 会分析数据并将其分层结构加载到内存(如果 XML 数据格式有误,它会发送运行时错误). 利用 XML 和 XMLList 对象的运算符和方法可以轻松遍历 XML 数据的结构. 1.读取外部 XML 文档 可以使用 URLLoader 类从 URL 加载 XML 数据.若

ActionScript 3.0 for the Lunder Algorithm

package com.feiruo.Calendar.LunderCalendar { /* *@ClassName: package:com.feiruo.Calendar.LunderCalendar::LunarDate *@INTRO: Calculating lunar and solar terms and other settings. *@Author: feiruo *@Language: ActionScript 3.0 *@SDKVersion: Flash Player

在 Flash ActionScript 2.0 中调用 Javascript 方法

本篇文章由:http://xinpure.com/call-the-javascript-method-in-flash-actionscript-2-0/ 在 Flash ActionScript 2.0 中调用 Javascript 方法 最近在工作中,有个这样的需求: 要从 Flash ActionScript 2.0 中调用网页上的 Javascript 方法 这是一个关于 Flash 和 Javascript 交互的问题. 在 ActionScript 2.0 中调用外部 javasc

ActionScript 3.0日期与时间管理(Date类)

/*Flash中,Date类管理着日期和时间信息.要获取   当前日期,可以新建一个Date对象   */var now:Date =new Date();trace (now);     /*输出当前时间和日期,格式如:                  Sun Jul 27 19:45:57 GMT+0800 2014  */ /*以上代码中,Date对象中包括了当前的秒.分.小时.  星期数.日.月.年.时区等信息...如果仅需要返  回星期值和日期值,而不返回时间或时区,可以使用Date

ActionScript 3.0数组操作

var arr:Array=new Array();arr=["a","b","c"];  //赋初值,注意这里的即使单个字符赋值使用的是""trace(arr[1]);       //获取成员信息trace(arr.length);    //获取数组中所包含的元素的个数 //接下来使用for循环逐个输出数组的每一个元素,这也称为数组的遍历var loopTime:int=arr.length;for (var i:int

ActionScript 3.0 加载外部SWF素材资源MovieClip,SimpleButton不支持鼠标事件

我们用flash buidler加载素材一般有三种途径: 1.SWC,这种方式会增大SWF的大小 2.flash cs项目关联 3.SWF专门放素材资源通过Loader方式加载 今天发现通过SWF加载方式有个问题要加载的素材如下图: A:是一个MC,里面放了一个B:mc,C:SimpleButton 问题:加载进A后对A添加鼠标事件如CLICK事件,单击B或C时没有反映? 开始我的加载方式是这样的: 目录结构如图: 代码如下: 1 package 2 { 3 import flash.displ