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

  • 相关阅读:
    取消Win10自动更新?
    Mybatis入门调试错误:Could not find resource XXX
    IDEA导入新Module出现的问题
    WEB-INF目录下的存放包的目录只能命名为lib
    rocketmq 同步刷盘、异步刷盘和同步复制、异步复制
    spring 集成mybatis
    Spring <aop:aspectj-autoproxy proxy-target-class="false|true"/>
    spring中expose-proxy的作用与原理
    分布式事物
    <context:annotation-config/>,<mvc:annotation-driven/>和<context:component-scan>之间的关联
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4544128.html
Copyright © 2020-2023  润新知