通过网络发送bitmapData - as3

时间:2014-11-07 16:31:19

标签: c# actionscript-3 flash c#-4.0 air

我正在尝试从客户端(用as3编写)向服务器发送一个bitmapdata(用C#编写)。 收到bitmapData后,服务器应将图像添加到给定位置的文件夹中。我将文件名和bitmapData一起发送到服务器。我能够读取文件名,但我无法读取服务器端的bitmapData。它不断抛出" ArgumentExceptionOccured - 参数无效"异常。

有人能告诉我如何将图像从客户端(as3)发送到服务器(C#)吗?

客户端代码:

function onScreenCaptureClick(event:MouseEvent):Void
{
var filename:String = "TEST123";
var myBitmapData:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
myBitmapData.draw(stage);

// Custom Network class which contains the 'openNetworkToken' method to send the image to the         server
Network.OpenNetworkToken("ADDIMAGE" + "|" + filename + "|" + myBitmapData);    
}

服务器端代码:

private void onAddImagesHandler(MessageEventArgs args)
  {
        if (args.IsTokenized)
        {
            System.Diagnostics.Debug.WriteLine("### CREATE MESSAGE RECEIVED ###");
            System.Diagnostics.Debug.WriteLine("Message: " + args.OriginalMessage);

            try
            {
                 string filename = args.Arguements[0];

                 Bitmap img = new Bitmap(args.Arguements[1]); // "ArgumentExceptionOccured - Parameter is not valid"
            }
            catch (Exception ex)
            {
            }
            args.SendResponse("ImageADDED", true);
        }

    }

任何帮助表示赞赏

谢谢, Vinu

1 个答案:

答案 0 :(得分:1)

您可以将您的位图转换为PNG并使用以下代码发送Base64编码:

var byteArray:ByteArray = new ByteArray();
myBitmapData.encode(new Rectangle(0,0,640,480), new flash.display.PNGEncoderOptions(), byteArray); 
var encoder:Base64Encoder = new Base64Encoder();
encoder.encodeBytes(byteArray);

Network.OpenNetworkToken("ADDIMAGE" + "|" + filename + "|" + encoder.toString());

如果您可以更改适合的网络类,则可以使用更有效的方式传输数据。有关该方法的基本概要,请参见https://stackoverflow.com/a/1438199/514087

相关问题