铁匠

做人要低调
随笔 - 139, 评论 - 273 , 引用 - 185

导航

公告

文章分类

存档

随笔分类

相册

BLOG

网站

论坛

2009年1月8日

在asp.net下面使用Ironsoft的FlashCapture

IronSoft的FlashCapture可以说是当前已知的一个唯一的可以实现flash抓图的组件,可惜它是在asp才能使用。现在跟着我来看看,如何在asp.net下面去调用它。

首先,在asp.net下添加FlashCapture的引用:

选中网站的项目,然后右键,选择“添加引用”,在弹出来的框里面选择”COM”这个选项卡,往下拉,找到”Ironsoft Library”,然后点击确定,这时候可以看到在bin目录下面添加了:Interop.IronSoft.dll.

其实就是添加代码:

FlashCaptureClass fc = new FlashCaptureClass();
fc.FileName = Server.MapPath("test.swf");
fc.CaptureFrame = 1;
fc.Save(Server.MapPath("test.jpg"));

这时候你会发现图片是抓出来了,可是是一片白的。这是因为asp和asp.net的线程模型不一样了,所以出现了这样的问题,这时候我们要设置asp.net的这个页面的Asp兼容模式:AspCompat 为"true"。也就是写在asp页面的顶上,如:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FlashCapture.aspx.cs" Inherits="FlashCapture" AspCompat="true" %>

这下子抓出来的图片里面就有内容了(IronSoft的其它组件调用如果有类似的问题,也都可以这样处理)。

最后,如果你用VS自带的服务器功能来调试的时候,会发现系统的状态栏上多了一个图标。这说明这时候FlashCapture组件并没有被释放掉。可以用以下代码来实现释放:

System.Runtime.InteropServices.Marshal.ReleaseComObject(fc);
GC.Collect();

这样就轻松实现了在asp.net下面实现Flash的抓图功能了。

posted @ 5:42 | Feedback (2)

京ICP备 05050892号