如何从as3(flash)中的C#方法获取图像?

时间:2014-01-09 06:54:47

标签: c# actionscript-3 sockets actionscript c#-3.0

对于我的项目,我想通过套接字将C#中捕获的实时网络摄像头视频添加到 as3 flash应用程序中。

我有 c#位图图片,我通过套接字发送
现在我想在as3 flash应用程序中显示这个位图图像。

1 个答案:

答案 0 :(得分:0)

最后我能弄清楚。

此代码从c#捕获实时网络摄像头源并将其发送到AS3(Flash)应用程序。

我从c#发送图片:

using (MemoryStream ms = new MemoryStream())
                {
                    Bitmap t = image.Clone(r, PixelFormat.Format32bppArgb);
                    t.Save(ms, ImageFormat.Jpeg);
                    byte[] imageBuffer = ms.ToArray();
                    byte[] filesize = BitConverter.GetBytes(imageBuffer.Length);
                    byte[] msg = new byte[filesize.Length + imageBuffer.Length];
                    filesize.CopyTo(msg, 0);
                    imageBuffer.CopyTo(msg, 4);
                    netstream.Write(msg, 0, msg.Length);
                    t.Dispose();

                }

在AS3方面,我接收它为:

socket.endian = Endian.LITTLE_ENDIAN;
b.endian = Endian.LITTLE_ENDIAN;// Changing it to little endian worked.
socket = new Socket();          
socket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse);
socket.connect("127.0.0.1", 12345);

private function onResponse(e:ProgressEvent):void 
{   
......
socket.readBytes(b,0,4);
b.position = 0;
filesize = b.readInt();
b.clear();
socket.readBytes(b,0,socket.bytesAvailable);
b.position = 0;         
l = new Loader();
l.loadBytes(b); 
l.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
}

private function loaded(e:Event):void
{
    var bitmap:Bitmap = e.target.content;
    while(this.numChildren > 0)
    {
        this.removeChildAt(0);
    }           
    addChild(bitmap);
    // remove listener
    e.target.removeEventListener(Event.COMPLETE, loaded);
}