c#位图转换未矢量图_C#调用Illustrator生成矢量图的缩略图(Illustrator矢量图形编程之3) | 学步园...

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

注意:需要添加对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文件格式)。

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

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

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

扩展话题:

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

参考资源:

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

你可能感兴趣的:(c#位图转换未矢量图)