C#调用Illustrator生成矢量图的缩略图(Illustrator矢量图形编程之3)

来源:互联网 发布:渔业资源保护科普软件 编辑:程序博客网 时间:2024/05/09 05:02

今天在一个图片网站上,上传Illustrator图片时,突然想到一个问题:已有一幅Illustrator做好的2009年的年历,想使用C#程序生成缩略图。怎么做呢?本文解决这个问题。

Illustrator原图在这里找到后下载(http://download.csdn.net/johnsuna)。

注意:需要添加对Illustrator动态链接库的引用。(在COM选项卡下的Adobe Illustrator XX.X Type Library)

 

C# 代码:
        private void btnGetAIThumb_Click(object sender, EventArgs e)
        {
            Illustrator.Application app = new Illustrator.Application();
            Illustrator.Document doc = app.Open(@"F:/AI_Prog/2009Calendar.ai", Illustrator.AiDocumentColorSpace.aiDocumentRGBColor, null);
            doc.Export(@"F:/AI_Prog/2009Calendar.png", Illustrator.AiExportType.aiPNG24, null);  //导出为PNG格式图片
            doc.Close(Illustrator.AiSaveOptions.aiDoNotSaveChanges); //关闭无提示也不再保存AI原文件
            doc = null; //释放资源
        }

注意上面有一个Illustrator.AiExportType.aiPNG24的参数,这个是用来指定生成图片格式的。事实上,可以生成多种Illustrator可以导出的类型,比如:JPEG,GIF,Flash,SVG甚至Photoshop文件。

 

以下是年历生成的效果(PNG文件格式)。

2009年年历(不含万年历)

细心的你,可能已经注意到,上面生成的并非缩略图!而是原样大小,那么,又如何生成缩略图呢?这个好办,有了PNG图片,生成缩略图就不难了,你只需要重新将生成的png图片用GDI+再绘制生成缩略图后保存即可,由于比较简单,这里代码就不写了。

如果你想在WinForm中运行上述代码,电脑里面必须安装Illustrator相应版本。而当你的Illustrator XX软件未打开时,你将看到Illustrator软件会被启动,之后很快关闭。如果你已打开Illustrator XX软件在做其他设计,那么,你将看到Illustrator在处理此程序之后,它并不会影响当前你在做的其他设计。

有一个有趣的现象:如果你的同一台电脑里安装两个不同版本的Illustrator,当你在选择所引用的COM组件dll库时,你引用了哪个版本,运行程序时程序将自动开启相应版本号的Illustrator。

 

扩展话题:

如何在用户通过网站上传Illustrator矢量图片文件时,自动生成它们的缩略图呢?道理一样,只是将你的本机程序搬到服务器上,其他的就是路径啊之类的问题了。这个不难,不再赘述。

参考资源:

如果你对C#下的Illustrator编程感兴趣,可以再看看这两篇:
用C#对Illustrator矢量图形软件进行编程之1 http://blog.csdn.net/johnsuna/archive/2008/04/05/2252514.aspx
用C#对Illustrator矢量图形软件进行编程之2 http://blog.csdn.net/johnsuna/archive/2008/04/10/2279817.aspx

你也可以到这里去下载相应的SDK:http://www.adobe.com/devnet/illustrator/sdk/ (最新版本CS4的)

或到这里下载相应的编程说明文档:http://www.adobe.com/devnet/illustrator/scripting/ (最新版本CS4的)

顺便说一句,如果你使用C#或者VB.net编写程序,建议你看VBScript的相关指南,这将为你节省不少时间。

原创粉丝点击