Reading Windows ICO files in Java

If you need to read a Windows ICO file from Java, UCWare IconTools for the Java platform may come in handy.

UCWare IconTools lets you read an icon into memory with just one line of code:


    Icon[] icons = IconTools.readIcons(new File("C:\\my.ico"));
    

As the result, you get an array of objects that implement the javax.swing.Icon interface. javax.swing.Icon allows for using icons throughout Swing (for instance, you can set icons on JButtons), and also in Java2D for obtaining BufferedImages, and so on.

UCWare IconTools supports multi-resolution icons with varying color depths, and also supports alpha channel transparency.

The following code snippet will display all icons from a single file as buttons:

    contentPane = (JPanel) getContentPane();
    pane.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
    setTitle("DemoReader");

    Icon[] ic = IconTools.readIcons(new File(args[0]));

    for (int i = 0; i < ic.length; i++)
    {
        Icon icon = ic[i];
        IcoIcon iic = (IcoIcon) icon;
        String inf = iic.getIconWidth()+"x"+iic.getIconHeight()
                     +"@"+iic.getBiBitCount();
        pane.add(new JButton(inf, icon));
    }
    contentPane.add(pane);
    
Here are the on-screen results:


Javadoc documentation for UCWare IconTools is available here.