I think you're incorrect about needing a .dll file. I've used imager on a few linux boxes, and though I've never needed to do much with .ico files, I've been more than pleased with having chosen that package to work with.
Re^3: Merge multiple BMP images into ICO files
Replies are listed 'Best First'.
Large parts of Imager are written in XS, which is mostly C with some Perl macros. On Win32, XS gets compiled into .dll files. On other platforms, it gets compiled into whatever format dynamically loadable libraries have. You can find out the filename extension for a platform by inspecting the output of perl -V:so on that platform:
Sorry, I was being too particular in my use of .dll to mean XS code. I would prefer to not have to compile XS code across multiple OSs. A pure Perl solution would be preferable; the reasons are in Re^2: Merge multiple BMP images into ICO files. But as I said in that node, I may be wasting my time looking for/writing a pure Perl solution and will go either with Imager or ImageMagick.
Thanks for your help. - J
The ICO.dll (or ICO.so, or ICO.bundle) is created during the build process. All of the code Imager requires to support ICO is part of Imager (most of the format support is in ICO/msicon.c).
The structure of images inside an ICO file is similar enough to BMP that you could probably write a simple script (or module) to do the conversion. One issue is that .ico doesn't allow compressed images, but you could test for that, since you need to parse the bmp header for the image size anyway.
I understand that the shared library is created from the XS code at build time. I was looking for a pure-Perl solution that could be distributed without having to build or install.
I also tried, for a day or two, to write the script/module you describe. I got about 80% of the way, but really didn't have enough time at $job to persue it. I reverted to systeming out to a command-line image conversion. I may return to this problem in the future.
Thanks for the reply.