Index: imagefield_file.inc
===================================================================
--- imagefield_file.inc	(revision 80)
+++ imagefield_file.inc	(working copy)
@@ -20,15 +20,27 @@
 }
 
 function imagefield_file_insert($file) {
-  // create and admin thumbnail.
+  // create an admin thumbnail.
   if (imagefield_file_is_image($file)) {
+    if (isset($file->thumb_resolution)) {
+      if ($file->thumb_resolution == '0') {
+        $thumb_width = $thumb_height = 0;
+      }
+      else {
+        list($thumb_width, $thumb_height) = explode('x', $file->thumb_resolution);
+      }
+    }
+    else {
+      $thumb_width = 100;
+      $thumb_height = 100;
+    }
     $info = image_get_info($file->filepath);
-    if($info['width'] < 100 || $info['height'] < 100) {
+    if($thumb_width == 0 || ($info['width'] < $thumb_width && $info['height'] < $thumb_height)) {
       $newfile = drupal_clone($file);
       file_copy($newfile->filepath, imagefield_file_admin_thumb_path($newfile));
     }
     else {
-      image_scale($file->filepath, imagefield_file_admin_thumb_path($file), 100, 100);
+      image_scale($file->filepath, imagefield_file_admin_thumb_path($file), $thumb_width, $thumb_height);
     }
   }
 }
Index: imagefield_widget.inc
===================================================================
--- imagefield_widget.inc	(revision 80)
+++ imagefield_widget.inc	(working copy)
@@ -23,7 +23,7 @@
   $form['max_resolution'] = array(
     '#type' => 'textfield',
     '#title' => t('Maximum resolution for Images'),
-    '#default_value' => !empty($widget['max_resolution']) ? $widget['max_resolution'] : 0,
+    '#default_value' => is_string($widget['max_resolution']) ? $widget['max_resolution'] : 0,
     '#size' => 15,
     '#maxlength' => 10,
     '#description' =>
@@ -33,18 +33,30 @@
   $form['min_resolution'] = array(
     '#type' => 'textfield',
     '#title' => t('Minimum resolution for Images'),
-    '#default_value' => !empty($widget['min_resolution']) ? $widget['min_resolution'] : 0,
+    '#default_value' => is_string($widget['min_resolution']) ? $widget['min_resolution'] : 0,
     '#size' => 15,
     '#maxlength' => 10,
     '#description' =>
     t('The minimum allowed image size expressed as WIDTHxHEIGHT (e.g. 640x480). Set to 0 for no restriction. If an image that is smaller than these dimensions is uploaded it will be rejected.'),
     '#weight' => 2,
   );
+  if (image_get_toolkit()) {
+    $form['thumb_resolution'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Thumbnail size for uploaded Images'),
+      '#default_value' => is_string($widget['thumb_resolution']) ? $widget['thumb_resolution'] : '100x100',
+      '#size' => 15,
+      '#maxlength' => 10,
+      '#description' =>
+      t('The thumbnail size that will displayed on the form after successful image upload, expressed as WIDTHxHEIGHT (e.g. 100x100). Set to 0 for no resizing.'),
+      '#weight' => 2,
+    );
+  }
 
   $form['file_extensions'] = array(
     '#type' => 'textfield',
     '#title' => t('Permitted upload file extensions.'),
-    '#default_value' => !empty($widget['file_extensions']) ? $widget['file_extensions'] : 'jpg jpeg png gif',
+    '#default_value' => is_string($widget['file_extensions']) ? $widget['file_extensions'] : 'jpg jpeg png gif',
     '#size' => 64,
     '#maxlength' => 64,
     '#description' => t('Extensions a user can upload to this field. Seperate extensions with a space and do not include the leading dot.'),
@@ -61,14 +73,14 @@
   $form['alt_settings']['custom_alt'] = array(
     '#type' => 'checkbox',
     '#title' => t('Enable custom alternate text'),
-    '#default_value' =>  !empty($widget['custom_alt']) ? $widget['custom_alt'] : 0,
+    '#default_value' =>  is_numeric($widget['custom_alt']) ? $widget['custom_alt'] : 0,
     '#description' => t('Enable user input alternate text for images.'),
   );
 
   $form['alt_settings']['alt'] = array(
     '#type' => 'textfield',
     '#title' => t('Default ALT text'),
-    '#default_value' => !empty($widget['alt']) ? $widget['alt'] : '',
+    '#default_value' => is_string($widget['alt']) ? $widget['alt'] : '',
     '#description' => t('This value will be used for alternate text by default.'),
     '#suffix' => theme('token_help', 'file'),
   );
@@ -83,7 +95,7 @@
   $form['title_settings']['custom_title'] = array(
     '#type' => 'checkbox',
     '#title' => t('Enable custom title text'),
-    '#default_value' =>  !empty($widget['custom_title']) ? $widget['custom_title'] : 0,
+    '#default_value' =>  is_numeric($widget['custom_title']) ? $widget['custom_title'] : 0,
     '#description' => t('Enable user input title text for images.'),
   );
 
@@ -91,7 +103,7 @@
   $form['title_settings']['title'] = array(
     '#type' => 'textfield',
     '#title' => t('Default Title text'),
-    '#default_value' => !empty($widget['title']) ? $widget['title'] : '',
+    '#default_value' => is_string($widget['title']) ? $widget['title'] : '',
     '#description' => t('This value will be used as the image title by default.'),
     '#suffix' =>  theme('token_help', 'file'),
   );
@@ -100,7 +112,12 @@
 
 function imagefield_widget_widget_settings_save($widget) {
   //@todo: rename custom_alt and custom_title to alt_custom and title_custom to be OCD.
-  return array('max_resolution', 'min_resolution', 'alt',  'custom_alt', 'title', 'custom_title');
+  if (image_get_toolkit()) {
+    return array('max_resolution', 'min_resolution', 'thumb_resolution', 'alt',  'custom_alt', 'title', 'custom_title');
+  }
+  else {
+    return array('max_resolution', 'min_resolution', 'alt',  'custom_alt', 'title', 'custom_title');
+  }
 }
 
 /**
