通过网络发送位图数据-as3

本文关键字:位图 数据 -as3 网络 | 更新日期: 2023-09-27 18:29:39

我正试图从客户端(用as3编写)向服务器发送位图数据(用C#编写)。服务器在收到位图数据后,应将图像添加到指定位置的文件夹中。我将文件名和位图数据一起发送到服务器。我可以读取文件名,但无法读取服务器端的位图数据。它不断抛出"ArgumentExceptionOccured-Parameter is not valid"异常。

有人能告诉我如何将图像从客户端(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

通过网络发送位图数据-as3

您可以将位图转换为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了解该方法的基本纲要。