zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    安装openssl后yum不能使用的解决办法
    使用xShell 连接 docker 使用说明
    /usr/bin/ld: cannot find -lcrypto
    Mac包管理神器:Home-brew
    FinalShell远程连接工具推荐
    make编译出错 usr/bin/ld: /data/app/openssl/lib/libcrypto.a(ecs_asn1.o): relocation R_X86_64_PC32 against symbol `ECDSA_SIG_it' can not be used when making a shared object; recompile with -fPIC
    交叉编译环境搭建
    安装Gitlab
    Git的详细使用
    服务器里Centos 7安装KVM,并通过KVM安装Centos 7
  • 原文地址:https://www.cnblogs.com/frost-yen/p/4544128.html
Copyright © 2011-2022 走看看