diff --git a/dropzonejs.libraries.yml b/dropzonejs.libraries.yml
index a73667e..0114a05 100644
--- a/dropzonejs.libraries.yml
+++ b/dropzonejs.libraries.yml
@@ -11,6 +11,16 @@ dropzonejs:
   css:
     component:
       /libraries/dropzone/dist/min/dropzone.min.css: {}
+exif-js:
+  title: 'Exif'
+  website: https://github.com/exif-js/exif-js
+  version: v2.2.0
+  license:
+    name: MIT
+    url: https://github.com/exif-js/exif-js/blob/master/LICENSE.md
+    gpl-compatible: true
+  js:
+    /libraries/exif-js/exif.js: {}
 widget:
   version: VERSION
   css:
@@ -21,7 +31,7 @@ integration:
   js:
     js/dropzone.integration.js: {}
   dependencies:
-    - core/jquery.once
+    - core/jquery
     - core/drupal
     - core/drupalSettings
     - core/underscore
diff --git a/dropzonejs.module b/dropzonejs.module
index f79d578..ba34542 100644
--- a/dropzonejs.module
+++ b/dropzonejs.module
@@ -66,5 +66,9 @@ function dropzonejs_library_info_alter(&$libraries, $extension) {
   if ($extension == 'dropzonejs' && \Drupal::moduleHandler()->moduleExists('libraries')) {
     $libraries['dropzonejs']['js'] = ['/' . libraries_get_path('dropzone') . '/dist/min/dropzone.min.js' => []];
     $libraries['dropzonejs']['css']['component'] = ['/' . libraries_get_path('dropzone') . '/dist/min/dropzone.min.css' => []];
+
+    if ($exif_path = libraries_get_path('exif-js')) {
+      $libraries['exif-js']['js'] = ['/' . $exif_path . '/exif.js' => []];
+    }
   }
 }
diff --git a/modules/eb_widget/src/Plugin/EntityBrowser/Widget/DropzoneJsEbWidget.php b/modules/eb_widget/src/Plugin/EntityBrowser/Widget/DropzoneJsEbWidget.php
index 242e681..b496478 100644
--- a/modules/eb_widget/src/Plugin/EntityBrowser/Widget/DropzoneJsEbWidget.php
+++ b/modules/eb_widget/src/Plugin/EntityBrowser/Widget/DropzoneJsEbWidget.php
@@ -104,6 +104,9 @@ class DropzoneJsEbWidget extends WidgetBase {
       'dropzone_description' => $this->t('Drop files here to upload them'),
       'max_filesize' => file_upload_max_size() / pow(Bytes::KILOBYTE, 2) . 'M',
       'extensions' => 'jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp',
+      'clientside_resize' => FALSE,
+      'resize_width' => NULL,
+      'resize_height' => NULL,
     ] + parent::defaultConfiguration();
   }
 
@@ -127,8 +130,14 @@ class DropzoneJsEbWidget extends WidgetBase {
       '#max_filesize' => $config['settings']['max_filesize'],
       '#extensions' => $config['settings']['extensions'],
       '#max_files' => ($cardinality > 0) ? $cardinality : 0,
+      '#clientside_resize' => $config['settings']['clientside_resize']
     ];
 
+    if ($config['settings']['clientside_resize']) {
+      $form['upload']['#resize_width'] = $config['settings']['resize_width'];
+      $form['upload']['#resize_height'] = $config['settings']['resize_height'];
+    }
+
     $form['#attached']['library'][] = 'dropzonejs/widget';
     // Disable the submit button until the upload sucesfully completed.
     $form['#attached']['library'][] = 'dropzonejs_eb_widget/common';
@@ -360,6 +369,60 @@ class DropzoneJsEbWidget extends WidgetBase {
       '#default_value' => $configuration['extensions'],
     ];
 
+
+    if (\Drupal::moduleHandler()->moduleExists('libraries')) {
+      $exif_path = libraries_get_path('exif-js') . '/exif.js';
+    }
+    else {
+      $exif_path = DRUPAL_ROOT . '/libraries/exif-js/exif.js';
+    }
+
+    // Is the library found in the root libraries path.
+    $exif_found = file_exists($exif_path);
+
+    $form['clientside_resize'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Use client side resizing'),
+      '#default_value' => $exif_found ? $configuration['clientside_resize'] : FALSE,
+    ];
+
+    if (!$exif_found) {
+      $form['clientside_resize']['#description'] = $this->t('Requires the <a href="@exif" target="_blank">exif</a> library. See README for more information.', ['@exif' => 'https://github.com/exif-js/exif-js']);
+      $form['clientside_resize']['#disabled'] = TRUE;
+    }
+
+    $form['resize_width'] = [
+      '#type' => 'number',
+      '#title' => $this->t('Max width'),
+      '#default_value' => $configuration['resize_width'],
+      '#size' => 60,
+      '#field_suffix' => 'px',
+      '#min' => 0,
+      '#states' => [
+        'visible' => [
+          ':input[name="table[' . $this->uuid() .  '][form][clientside_resize]"]' => array(
+            'checked' => TRUE,
+          ),
+        ]
+      ]
+    ];
+
+    $form['resize_height'] = [
+      '#type' => 'number',
+      '#title' => $this->t('Max height'),
+      '#default_value' => $configuration['resize_height'],
+      '#size' => 60,
+      '#field_suffix' => 'px',
+      '#min' => 0,
+      '#states' => [
+        'visible' => [
+          ':input[name="table[' . $this->uuid() .  '][form][clientside_resize]"]' => array(
+            'checked' => TRUE,
+          ),
+        ]
+      ]
+    ];
+
     return $form;
   }
 
diff --git a/src/Element/DropzoneJs.php b/src/Element/DropzoneJs.php
index c4ba01e..9bc0071 100644
--- a/src/Element/DropzoneJs.php
+++ b/src/Element/DropzoneJs.php
@@ -121,6 +121,17 @@ class DropzoneJs extends FormElement {
       ],
     ];
 
+    if (!empty($element['#clientside_resize'])) {
+      $element['#attached']['drupalSettings']['dropzonejs']['instances'][$element['#id']] += [
+        'resizeWidth' => !empty($element['#resize_width']) ? $element['#resize_width'] : NULL,
+        'resizeHeight' => !empty($element['#resize_height']) ? $element['#resize_height'] : NULL,
+        'resizeMimeType' => !empty($element['#resize_mime_type']) ? $element['#resize_mime_type'] : 'image/jpeg',
+        // @todo Figure out what to do with this.
+        'resizeQuality' => 1,
+      ];
+      array_unshift($element['#attached']['library'], 'dropzonejs/exif-js');
+    }
+
     static::setAttributes($element, ['dropzone-enable']);
     return $element;
   }
