通过网络发送位图数据-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
您可以将位图转换为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了解该方法的基本纲要。