Project Description

Create a general purpose image manipulation module using the ImageMagick application .

Motivation

Drupal's image subsystem has some very limited capabilities, but a more complete library would allow for more distinctive sites, and lower the time it takes to maintain these sites. The module should be developed in such a way that image filters can be distributed and re-used in various sites, and improve image handling and image integration for all modules that use images.

Problem Description

Images that are uploaded often need to be manipulated to fit in with the general theme of the site. This might include such things such as adding borders, cropping images, resizing to the correct sizes and perhaps even modifying the colours. All of the needed effects are available when you have the ImageMagick application installed, however the command line arguments for ImageMagick are not widely understood. Apart from a few limited pieces of functionality, none of the features are currently available to Drupal users and developers.

Image manipulation can however be fairly complex, and most of the time more than a single operation will be required, hence an image manipulation pipeline needs to be developed, whereby multiple operations can be applied to each image, or each stage of the image to provide
a final result

Success Criteria

  1. Develop and document a library that allows access to ImageMagick operations

    Operations to be included (to be extended)

    Layer compositions.
    Must be able to combine two or more layers into a single image.
    Student must decide on which layer composition modes to support (hue, saturation etc)
    All compositions must (be able to?) maintain the translucency of all layers.
    Text
    Placing text on images for creation of header images and for the purpose of watermarks and the like.
    Gradients
    Create gradients on images, for use in creating custom backgrounds and the like
  2. Develop a drupal hook that allows for the creation of 'effects', which are multiple image operations, and specific input settings that are used to provide specific graphical effects.
  3. Develop an interface that allows newly uploaded images with the upload, or image modules to be processed using the imagemagick module.
  4. Identify and provide some of the more common effects or processes as part of the imagemagick module, with the ability to pre-configure them for use with the upload form.
  5. This module must function on all the platforms that both Drupal and ImageMagick are supported.

Roadmap

  1. Become familiar with the following items: Imagemagick, File API, Image API , Form API
  2. Identify x image manipulation actions that could be automated.
  3. Identify what processes are required, and how to accomplish them using ImageMagick.
  4. Develop functions for each of the operations, clearly documenting their use and parameters.
  5. Develop a hook that allows a developer to define 'effects', by specifying a series of operations to be called on an image, and a set of parameters.
  6. Add additional fields to the upload form to allow the user to select which effect to execute for the uploaded images.