I've been writing some personal tools for processing photographic images (film
scans, if you must know). For most of it, I've been using Ruby 1.9 and the
ImageMagick library, which has a very rich toolset of image-manipulation
functions that are fairly easy to program using the RMagick gem that hooks up
to the ImageMagick core engine. (Note: *not* running ImageMagick via
sub-shells.)
However, these are all batch tools (run from the command line). When I needed a
tool with a GUI, I used MacRuby, and then got very frustrated trying to get
Cocoa to be as functional as ImageMagick. To start with, there's the confusing
mess of NSImage vs. CGImage vs. CIImage, etc. I found that Cocoa's great for
doing things it's good at, but once you start driving off the road, you run
into boulders.
Anyway, this morning I realized I could glue the two together, simply by
installing the RMagick gem in MacRuby! I always assumed that would break. But
nope, it works fine. (I've installed ImageMagick using Homebrew, BTW.)
For example, here's my Cocoa-only code for loading an image from a file into a
CIImage:
ci_image = CIImage.imageWithContentsOfURL(NSURL.fileURLWithPath(path))
and here's the new code with ImageMagick/RMagick:
im_image_list = Magick::Image.read(path)
# do some ImageMagick magic here!
im_image = im_image_list.first
data = im_image.to_blob.to_data
ci_image = CIImage.imageWithData(data)
Obviously, that's more code (though I've separated it to be a bit more
readable). And it probably involves one or two copies of the image data, more
than is needed. And doesn't lend itself to CIFilter-like realtime processing.
But the point is that now I can process an image using ImageMagick, and display
it using Cocoa, all in the same Ruby process!
--John
PS: This doesn't address packaging. These are my own tools, and so I'm just
writing them as simple executables -- I'm not even building application
bundles. Obviously if one was to ship an app using ImageMagick internally,
there'd be some work to package it into the bundle.
_______________________________________________
MacRuby-devel mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo/macruby-devel