如何使用Java读取ico文件?
用Java读取ico文件,用ico做新的鼠标图标。
昨天需要在程序里用ico做鼠标,但在jdk中没找到可以读取ico文件的方法。只好到网上找,在百度里搜索了半天也没看出个啥,用google搜索 ‘java ico’一下就搜索出来办法了。
0 前言
进入下面这个地址:
http://www.acproductions.de/commercial/aclibico/
Java library for ICO files © 2003-2006 Christian Treber
感谢Christian Treber这个老外的作品,可以让我方便的读取ico,而且使用是免费的。
1下载这个包: aclibico-2.1.zip
2 解压缩得到这个jar文件:aclibico-2.1.jar
这个就是我们需要的可以把ico转换成image的东东
下面是网站上关于这个包的的介绍:
|
在网站上竟然没有发现一个如何使用这个包的说明例子:只能自己看API了。
3 在下载下来的aclibico-2.1.zip压缩包里有AC.lib-ICOJavaDoc.pdf的API文档
因为是pdf文档,找起api来很麻烦,所以把需要的api直接截图下来,方便查看
4 在程序使用aclibico-2.1.jar
在工程的路径下添加这个包,就可以转换ico文件了。
下面是我如何使用这个包的
//导入aclibico-2.1.jar的ICOFile类,这是我们需要的转换ico文件的类
import com.ctreber.aclib.image.ico.ICOFile;
//ico所在的路径表示成一个url
String tmp = this.baseUrl + "/ico/" + icoName + ".ico";
URL u = new URL(tmp);
//这里就是读取ico文件的方法。我是通过一个url读取的。
ICOFile ico = new ICOFile(u);
//可能ico文件里不止一个图片,返回图片列表
java.util.List list = ico.getImages();
Image image = null;
//因为我确定我读取的ico里只包括一张图片,所以我判定是否为空。然后取出一张来,可能里面有好几张。可以都取出来。
if (!list.isEmpty()) {
//不为空我就取出那张图片来
image = (Image) list.get(0);
}
//我读取的ico是16*16的,我想把它弄大一点点,所以把它拉伸20*20.用sun的图象处理api真方便,只要一行代码。
image = image.getScaledInstance(20, 20, Image.SCALE_SMOOTH);
//最后,我把这张20*20的图片做为我新的鼠标图案,在程序里就可以直接使用新的鼠标图案了
Cursor newCursor = Toolkit.getDefaultToolkit().createCustomCursor(image, new Point(10, 10), cursorName); |
5 结束语
这个包使用起来还是很方便的,而且很校这样在程序里做GUI的鼠标图案就很方便了。
另外用bmp.jpeg。。等其他官方jdk支持的图象格式也能做鼠标图案,不过要稍微麻烦点。(要过滤掉一些颜色做透明化处理)
这是我的一些看法,不知道有没有错,有不对的地方,请看这篇文章的朋友指出来,谢谢。
本文地址:http://www.45fan.com/dnjc/68218.html