图象对象
如果你学习API,你将注意到这儿有几个构造函数你可以用来创建一个image对象,但是在这节中我们只着眼于最简单的方法,通过URL和文件名来确定一个图象对象的实例。
public static Image getInstance(Uri url) public static Image getInstance(string filename)
图象类是个抽象类,所以getInstance方法将查找出给定图象的图象类型(GIF, Jpeg, PNG,…)并且返回Gif, Jpeg, Png,...等图象类型的一个对象,getInstance会拒绝一些图象类型。
通过URL来获取一个图象对象的实例
这是一个用来向文档增加一个图象的最简单的方法,在Example1中我们增加了一张WMV类型的图片(图片原文件)、一张GIF类型的图片(图片原文件)、一张JPG类型的图片(图片原文件)和一张PNG类型的图片(图片原文件),并且使用了3个URL引用到网站上的图片。
Image wmf = Image.getInstance(new URL(Article/Article/harbour.wmf")); Image gif = Image.getInstance(new URL("Article/Article/vonnegut.gif")); Image jpeg = Image.getInstance(new URL("Article/Article/myKids.jpg")); Image png = Image.getInstance(new URL("Article/Article/hitchcock.png"));
点击Document1查看Example1形成的PDF文档。
备注:
许多PDF库在添加图象到文档以前要对图象进行解压缩或转换成位图格式的文件,这儿几个原因我们避免使用这种方法。
1. 这将导致产生一个巨大的PDF文件,最终PDF文件的大小是文档中包括的所有图片大小总和的十几倍大。
2. 这是一个法律性的问题,LZW算法是申请了专利的,所以我不被允许使用该算法来解压缩GIF图片文件。
我发现复制图象数据到PDF文件比压缩和解压缩图象数据更容易,所以我使用复制图象位的方法代替压缩和解压缩。
通过图象文件来获取一个图象对象的实例
我们可以简单改变Example1的原程序中调用getIndtance方法的参数如Example2中所示:
Image gif = Image.getInstance("Article/Article/vonnegut.gif"); Image jpeg = Image.getInstance("Article/Article/myKids.jpg"); Image png = Image.getInstance("Article/Article/hitchcock.png");
最终形成的PDF文档和Example1形成的PDF文档一样。
|