libicns is a library for manipulation of the Mac OS icns resource format, also known as the IconFamily resource type. It can read and write files from the Mac OS X icns format, as well as read from Mac OS resource files and macbinary encoded Mac OS resource forks. As of release 0.5.9, it can fully read and write any 128x128 and all smaller 32-bit icons, and read support for 8-bit, 4-bit, and 1-bit icons. If linked against Jasper, it also has full support for 256x256 and 512x512 32-bit icons with masks as alpha channels.
libicns includes icns2png, a tool for extracting the images contained within icns files, and saving them as png images. It also includes png2icns, a tool for creating icns files from a set of png images.
libicns, icns2png, and png2icns should work on just about any POSIX/GNU compatible platform, including Linux, OS X, and various BSD implementations.
Note: If you are developing for Mac OS X using Objective-C, you may want to take a look at the project IconFamily instead.
Want to see libicns in action? libicns is used as part of the backend for Convert Icons, an online tool used to convert icons. libicns is used for the icns to png conversion, and for the png to icns conversion.