diff --git a/canvasactions/canvasactions.inc b/canvasactions/canvasactions.inc
index 2c2323a..8ed0843 100644
--- a/canvasactions/canvasactions.inc
+++ b/canvasactions/canvasactions.inc
@@ -90,6 +90,20 @@ function canvasactions_imagemask_effect(stdClass $image, array $data) {
 }
 
 /**
+ * Image effect callback for the Interlace / Progressive effect.
+ *
+ * @param stdClass $image
+ * @param array $data
+ *
+ * @return bool
+ *   true on success, false otherwise.
+ */
+function canvasactions_interlace_effect(stdClass $image, array $data) {
+  return image_toolkit_invoke('interlace_image', $image, array($data));
+  return FALSE;
+}
+
+/**
  * GD toolkit specific implementation of the image mask effect.
  *
  * @param stdClass $image
@@ -148,6 +162,39 @@ function image_imagemagick_imagemask(stdClass $image, stdClass $mask) {
   return TRUE;
 }
 
+/**
+ * GD toolkit specific implementation of the image interlace effect.
+ *
+ * @param stdClass $image
+ *   Image object containing the GD image resource to operate on.
+ *
+ * @param array $data
+ *   The current configuration for this image effect.
+ *
+ * @return bool
+ *   true on success, false otherwise.
+ */
+function image_gd_interlace_image($image, $data) {
+  imageinterlace($image->resource, 1);
+  return TRUE;
+}
+
+/**
+ * Imagemagick toolkit specific implementation of the image interlace effect.
+ *
+ * @param stdClass $image
+ *   Image object containing the image resource to operate on.
+ *
+ * @param array $data
+ *   The current configuration for this image effect.
+ *
+ * @return bool
+ *   true on success, false otherwise.
+ */
+function image_imagemagick_interlace_image($image, $data) {
+  $image->ops[] = '-interlace Plane';
+  return TRUE;
+}
 
 /**
  * Image effect form callback for the define canvas effect.
diff --git a/canvasactions/imagecache_canvasactions.module b/canvasactions/imagecache_canvasactions.module
index 86365de..1384676 100644
--- a/canvasactions/imagecache_canvasactions.module
+++ b/canvasactions/imagecache_canvasactions.module
@@ -74,6 +74,13 @@ function imagecache_canvasactions_image_effect_info() {
     'summary theme' => 'canvasactions_imagemask_summary',
   );
 
+  $effects['canvasactions_interlace'] = array(
+    'label' => t('Interlace / Progressive'),
+    'help' => t('Create interlaced PNG/GIF or progressive JPG.'),
+    'effect callback' => 'canvasactions_interlace_effect',
+    'dimensions passthrough' => TRUE,
+  );
+
   $effects['canvasactions_file2canvas'] = array(
     'label' => t('Overlay (watermark)'),
     'help' => t('Choose the file image you wish to use as an overlay, and position it in a layer on top of the canvas.'),
