用Java读取ico文件,用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的东

 

下面是网站上关于这个包的介绍:

What it Does

·  Read ICO files from file, stream, buffer, URL

·  Convert ICO file into Java Image objects

What it Needs

·  Java Runtime 1.4 or higher

What it Costs

·  Nothing - it's for free.

 

 

在网站上竟然没有发现一个如何使用这个包的说明例子:只能自己看API了。

 

3 在下载下来的aclibico-2.1.zip压缩包里有AC.lib-ICOJavaDoc.pdfAPI文档

 

因为是pdf文档,找起api来很麻烦,所以把需要的api直接截图下来,方便查看

  用Java读取ico文件,用ico做新的鼠标图标。_第1张图片

 

 

4 在程序使用aclibico-2.1.jar

 

在工程的路径下添加这个包,就可以转换ico文件了。

 

下面是我如何使用这个包的

//导入aclibico-2.1.jarICOFile类,这是我们需要的转换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);

}

//我读取的ico16*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支持的图象格式也能做鼠标图案,不过要稍微麻烦点。(要过滤掉一些颜色做透明化处理)

 

这是我的一些看法,不知道有没有错,有不对的地方,请看这篇文章的朋友指出来,谢谢。

 

 

你可能感兴趣的:(java,jdk,image,api,url,library)