diff --git a/node_gallery.inc b/node_gallery.inc
index 0c92935..73fe9d0 100644
--- a/node_gallery.inc
+++ b/node_gallery.inc
@@ -1082,7 +1082,6 @@ function node_gallery_batch_sorting_finished($success, $results, $operation) {
 }
 
 function node_gallery_batch_rotate_callback($filepath, $degrees, &$context) {
-  $result = 0;
   $image = imageapi_image_open($filepath);
   if ($image !== FALSE) {
     if (imageapi_default_toolkit() == 'imageapi_imagemagick') {
@@ -1107,11 +1106,11 @@ function node_gallery_batch_rotate_callback($filepath, $degrees, &$context) {
     $filepath_old = $filepath;
     file_move($filepath, $filepath_new);
     drupal_write_record('files', $file, 'fid');
+    $context['results']['rotate'][] = $file->fid;
   }
   else {
     watchdog('node_gallery', 'Could not open image for rotation');
   }
-  $context['results'][] = $result;
 }
 
 /**
diff --git a/node_gallery.module b/node_gallery.module
index fc8e256..d788971 100644
--- a/node_gallery.module
+++ b/node_gallery.module
@@ -913,8 +913,9 @@ function node_gallery_image_delete_process($imagenids, &$context) {
   while (!empty($context['sandbox']['imagenids']) && $count <= NODE_GALLERY_BATCH_CHUNK_SIZE) {
     $count++;
     $nid = array_shift($context['sandbox']['imagenids']);
-    node_delete($nid);
+    node_gallery_node_delete($nid);
     $context['sandbox']['progress']++;
+    $context['results']['delete'][] = $nid;
   }
   // Let the batch engine know how close we are to completion.
   if ($context['sandbox']['progress'] == $context['sandbox']['max']) {
@@ -926,6 +927,36 @@ function node_gallery_image_delete_process($imagenids, &$context) {
   }
 }
 
+/**
+ * Custom implementation of node_delete() that doesn't spam user with messages.
+ */
+function node_gallery_node_delete($nid) {
+
+  // Clear the cache before the load, so if multiple nodes are deleted, the
+  // memory will not fill up with nodes (possibly) already removed.
+  $node = node_load($nid, NULL, TRUE);
+
+  if (node_access('delete', $node)) {
+    db_query('DELETE FROM {node} WHERE nid = %d', $node->nid);
+    db_query('DELETE FROM {node_revisions} WHERE nid = %d', $node->nid);
+    db_query('DELETE FROM {node_access} WHERE nid = %d', $node->nid);
+
+    // Call the node-specific callback (if any):
+    node_invoke($node, 'delete');
+    node_invoke_nodeapi($node, 'delete');
+
+    // Clear the page and block caches.
+    cache_clear_all();
+
+    // Remove this node from the search index if needed.
+    if (function_exists('search_wipe')) {
+      search_wipe($node->nid, 'node');
+    }
+    watchdog('content', '@type: deleted %title.', array('@type' => $node->type, '%title' => $node->title));
+  }
+}
+
+
 function node_gallery_batch_node_save($nodes, &$context) {
   if (!isset($context['sandbox']['progress'])) {
     $context['sandbox']['progress'] = 0;
@@ -946,6 +977,7 @@ function node_gallery_batch_node_save($nodes, &$context) {
     $node = (object)array_merge((array)node_load($node->nid), (array)$node);
     node_save_action($node);
     $context['sandbox']['progress']++;
+    $context['results']['update'][] = $node->nid;
   }
   // Let the batch engine know how close we are to completion.
   if ($context['sandbox']['progress'] == $context['sandbox']['max']) {
@@ -969,6 +1001,18 @@ function node_gallery_batch_node_save($nodes, &$context) {
  */
 function node_gallery_image_process_finished($success, $results, $operations) {
   if ($success) {
+    if (isset($results['delete']) && is_array($results['delete'])) {
+      $delete_message = format_plural(count($results['delete']), "Deleted 1 image.", "Deleted @count images.");
+      drupal_set_message($delete_message);
+    }
+    if (isset($results['update']) && is_array($results['update'])) {
+      $update_message = format_plural(count($results['update']), "Updated 1 image.", "Updated @count images.");
+      drupal_set_message($update_message);
+    }
+    if (isset($results['rotate']) && is_array($results['rotate'])) {
+      $rotate_message = format_plural(count($results['rotate']), "Rotated 1 image.", "Rotated @count images.");
+      drupal_set_message($rotate_message);
+    }
     drupal_set_message(t('Image modifications complete.'));
     cache_clear_all();
     _field_file_cache(NULL, TRUE);
