如果你经常用Java来处理图象,这两个小技巧会给你带来很大的便利。第一个技巧是充分地利用Java
Abstract Windows Toolkit (AWT),第二个技巧提供了处理多目的互联网邮件扩展(MIME)文件的方法,并说明隐藏映射如何把这一过程变得更加容易。
AWT提供了很多处理图表对象的方法,但是它如何把一个图表对象转化成图象对象?
AWT图象类提供了getGraphics 方法,BufferedImage类提供了createGraphics 方法。最常用的是BufferedImage,因为它返回的是一个功能强大的2D图形类,下面是代码的小片断:
BufferedImage bffImg = new BufferedImage( ); Graphics gfx = bffImg.createGraphics( ); gfx.drawRect(10, 10, 50, 20); // draw a rectangl
BufferedImage允许开发人员通过使用Graphics API来生成自己的图象。新发布的JDK 1.4提供一个API函数来处理这一过程。如果使用1.3或更旧的版本这一过程同样有效,这也就是Java高级图象API函数的优越性。
你可以使用这一技巧来生成任一图表的快照,并保存为一个图象格式。请注意这一图表必须是可改变的,这样你才可以把它添加到一个看不见的屏幕容器。nanoTITAN Inc.中的公开代码库内的ComponentUtility类提供了这样的快照方法。
当提及servlet 或JavaServer Page (JSP)时,你一定会知道MIME类型。在处理MIME类型时,你一般都是通过繁琐的代码来实现,有没有更好的办法?
虽然没有全部支持你所需要类型,Java提供了文件名到MIME类型的自动映射。映射隐藏在一个名为FileNameMap的界面,你可以在Java.net包中找到这一界面。可以通过URLConnection类来获得映射,这一个类也可以在Java.net包中找到。一旦映射成功,就可以使用getContentTypeFor方法,通过传递一个文件名就可以决定MIME类型。
Listing A 提供了一些简单范例的代码,并返回以下的值:
application/octet-stream image/gif image/png image/jpeg null application/xml text/html null image/tiff
使用Java来处理图表是一件不容易的事件,但是AWT和FileNameMap能够把这些一过程变得很容易。