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,_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