[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

 

你可能感兴趣的:(actionscript)