Index: image.imagemagick.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/image/image.imagemagick.inc,v
retrieving revision 1.3.2.9
diff -u -r1.3.2.9 image.imagemagick.inc
--- image.imagemagick.inc	10 Jul 2007 00:56:19 -0000	1.3.2.9
+++ image.imagemagick.inc	20 Jul 2007 01:04:04 -0000
@@ -74,11 +74,19 @@
   return FALSE;
 }
 
+function _image_imagemagick_alter_invoke(&$filter, $op) {
+  foreach (module_implements('imagemagick_alter') as $module) {
+    $function = $module . '_imagemagick_alter'; 
+    $function($filter, $op);
+  } 
+}
+
 /**
  * Resize an image to the given width and height
  */
 function image_imagemagick_resize($source, $dest, $width, $height) {
-  $filter = ' -scale '. $width .'x'. $height .'! -filter QUADRATIC';
+  $filter = array('scale' => ' -scale '. $width .'x'. $height .'! -filter QUADRATIC');
+  _image_imagemagick_alter_invoke(&$filter, 'resize');
   return _image_imagemagick_convert($source, $dest, $filter);
 }
 
@@ -86,7 +94,8 @@
  * Rotate an image
  */
 function image_imagemagick_rotate($source, $dest, $degrees, $bg_color = 0x000000) {
-  $filter = ' -rotate '. escapeshellarg($degrees) .' -background #'. str_pad(dechex($bg_color), 6, 0);
+  $filter = array('rotate' => ' -rotate '. escapeshellarg($degrees) .' -background #'. str_pad(dechex($bg_color), 6, 0));
+  _image_imagemagick_alter_invoke(&$filter, 'rotate');
   return _image_imagemagick_convert($source, $dest, $filter);
 }
 
@@ -94,7 +103,8 @@
  * Crop an image to the specified dimensions
  */
 function image_imagemagick_crop($source, $dest, $x, $y, $width, $height) {
-  $filter = ' -crop '. $width .'x'. $height .'+'. $x .'+'. $y;
+  $filter = array('crop' => '-crop '. $width .'x'. $height .'+'. $x .'+'. $y);
+  _image_imagemagick_alter_invoke(&$filter, 'crop');
   return _image_imagemagick_convert($source, $dest, $filter);
 }
 
@@ -102,12 +112,16 @@
  * Calls the convert executable with the specified filter
  */
 function _image_imagemagick_convert($source, $dest, $filter) {
-  if (variable_get('image_imagemagick_option_strip', 0)) {
-    $filter .= ' -strip ';
+  _image_imagemagick_alter_invoke(&$filter, 'all');
+  if (variable_get('image_imagemagick_option_strip', 0) && empty($filter['strip'])) {
+    $filter['strip'] = '-strip';
+  }
+  foreach ($filter as $filter_key => $filter_value) {
+    $filter[$filter_key] = preg_replace("/[^A-Za-z0-9\!\.\-\+\040\/\\_]/", '', $filter_value);
   }
 
   $command = implode(' ', array(
-    preg_replace("/[^A-Za-z0-9\!\.\-\+\040]/", '', $filter),
+    implode(' ', $filter),
     escapeshellarg($source),
     escapeshellarg($dest),
   ));
