Results 1 to 10 of 22

Thread: Windows Icons to Linux (converting)

Threaded View

  1. #1
    Join Date
    Nov 2006
    There and back again

    Windows Icons to Linux (converting)

    This is an Update, I preserved the original below.

    I found a much better method to make your Icons on Windows available on your Linux Box, and easier too. The prior method would disguise the .ico file as a .png, completely ignoring multiple layers hidden therein. This also made the .png impossible to edit in gimp. Well, I stumbled upon a much better way to have your icons converted. First we'll need icoutils.

    sudo apt-get install icoutils
    Icoutils contains four programs, the two most likely you'll use though are wrestool and icotool. Whatis reveals what these programs do

    icotool (1) - Convert and create Win32 icon and cursor files
    wrestool (1) - extract resources from Microsoft Windows(R) binaries (exe's and dlls) I assume ``extresso'' automates these tasks with the help of special resource scripts.

    You can use icotool to see what types of icons are available in an .ico file:

    icotool -l Emoticon.ico
    You'll see a list like this:

    --icon --index=1 --width=32 --height=32 --bit-depth=8 --palette-size=256
    --icon --index=2 --width=16 --height=16 --bit-depth=8 --palette-size=256
    --icon --index=3 --width=128 --height=128 --bit-depth=32 --palette-size=0
    --icon --index=4 --width=48 --height=48 --bit-depth=32 --palette-size=0
    --icon --index=5 --width=32 --height=32 --bit-depth=32 --palette-size=0
    --icon --index=6 --width=16 --height=16 --bit-depth=32 --palette-size=0
    In this case it showed six different sizes, I believe this is standard for XP (and Vista??).

    If you want to extract all the icons in the .ico file and converts them to .png:

    icotool -x -o . BootCamp_Drive.ico
    This will extract the six icons listed above in Emoticon.ico. -x signifies extract while -o directs icotool to an output directory, in this case "." or the same directory.

    You will notice that the eight bit depth icons won't carry a proper alpha layer and have a black layer about them. You probably won't need the eight bit depth icons and they dont' need to be extracted. To extract an entire directory ignoring eight bit icons cd into it and just do:

    icotool -x --palette-size=0 -o /home/user/Desktop/seperate-directory *.ico
    Ignoring the 256 colored (eight bit) icons, use the palette size of 0 to specify 24 bit and 32 bit. You also noticed it isn't a bad idea to use a separate output directory.

    Thats is. Enjoy!

    Manual Icon Conversion

    This was the first way I did it, and it works nice, albeit it is a dirty method. There were no resources that I could locate so I pretty much learned this from scratch.

    I had heard ImageMagik could do this but the program convert gave me a don't understand (.) argument. Anyways. Next, I heard Gimp would be perfect for such a little task. So, I tried to learn how to do batch jobs. I'm sorry, but the documentation I saw, just overwhelmed me. Doing batch jobs in Gimp take a pretty experienced person.

    So I was just messin' about and decided to change .ico to .png. OMG, it worked!

    That's all I had to do! The mask and everything was kept. Now, of course, this isn't the best method if you have hundreds of icons you need converted. So I tried 'mv *.ico *.png'. This to my surprise didn't work. I learned that to do mass renaming like this takes quite a bit more programming knowledge. Well, to cut this short. I made a script that first takes spaces out of the icons names and replaced them with underscores, then added the change name extension. Goto the icon Folder (e.g. cd ~/Desktop/Frosty-Icons) then use the script. You have to use for the script for all the folders, but it will save you a lot of time. Just cut/paste into the terminal.
    for i in *\ *
    mv "$i" `echo "$i" | tr ' '  '_'`
    for i in *.ico
      # or: j=${i}l
      mv $i $j
    Note: Windows .ico's use multiple layers, and png's don't, so opening these files up in Gimp isn't possible unless (of course) you rename the extension back.
    Last edited by Gen2ly; May 22nd, 2007 at 11:27 AM.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts