diff --git a/Gemfile.lock b/Gemfile.lock
index 3ac32c6f7b64413670a8a760aefa9b016e15e168..448d6555594758ea835e2517dfd86cb3323d5c25 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -314,7 +314,7 @@ GEM
     simple_form (5.1.0)
       actionpack (>= 5.2)
       activemodel (>= 5.2)
-    simple_form_bs5_file_input (0.0.1)
+    simple_form_bs5_file_input (0.0.3)
       rails
       simple_form
     simple_form_password_with_hints (0.0.2)
diff --git a/app/assets/javascripts/admin.js b/app/assets/javascripts/admin.js
index 308fd03084d7f88c4a2128f996d41e85ea2bbc00..226a7da476cfad834caf00d3f108d2bed34a6f00 100644
--- a/app/assets/javascripts/admin.js
+++ b/app/assets/javascripts/admin.js
@@ -4,5 +4,7 @@
 //= require notyf/notyf.min
 //= require simple_form_password_with_hints
 //= require simple_form_bs5_file_input
+//= require cropperjs/dist/cropper
+//= require jquery-cropper/dist/jquery-cropper
 //= require appstack/app
 //= require_tree ./admin
diff --git a/app/assets/stylesheets/admin.sass b/app/assets/stylesheets/admin.sass
index 112d136967d04714be568fe73ddf9a8f5c267e2d..945fc63ec514b4bca3bdb2a2ce21a852fa255bf8 100644
--- a/app/assets/stylesheets/admin.sass
+++ b/app/assets/stylesheets/admin.sass
@@ -3,5 +3,6 @@
 @import 'appstack/light'
 @import 'simple_form_password_with_hints'
 @import 'simple_form_bs5_file_input'
+@import 'cropperjs/dist/cropper'
 @import 'commons/*'
 @import 'admin/*'
diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb
index 86d995b3395a45d48f26c2cd3299483a4503ea2f..df691fbb1d0cfe1afb5f9fded8b415f963f5b7df 100644
--- a/app/controllers/admin/users_controller.rb
+++ b/app/controllers/admin/users_controller.rb
@@ -67,6 +67,6 @@ class Admin::UsersController < Admin::ApplicationController
   end
 
   def user_params
-    params.require(:user).permit(:first_name, :last_name, :role, :language_id, :picture, :picture_delete, :mobile_phone)
+    params.require(:user).permit(:first_name, :last_name, :role, :language_id, :picture, :picture_delete, :picture_infos, :mobile_phone)
   end
 end
diff --git a/app/controllers/users/registrations_controller.rb b/app/controllers/users/registrations_controller.rb
index 23e45fcd92ef1fe0bef462918fd31c8f644e40f9..c13527e2543fbda37bcddd324be4bfa2336432a1 100644
--- a/app/controllers/users/registrations_controller.rb
+++ b/app/controllers/users/registrations_controller.rb
@@ -31,10 +31,10 @@ class Users::RegistrationsController < Devise::RegistrationsController
   end
 
   def configure_sign_up_params
-    devise_parameter_sanitizer.permit(:sign_up, keys: [:language_id, :first_name, :last_name, :picture, :picture_delete])
+    devise_parameter_sanitizer.permit(:sign_up, keys: [:language_id, :first_name, :last_name, :picture, :picture_infos, :picture_delete])
   end
 
   def configure_account_update_params
-    devise_parameter_sanitizer.permit(:account_update, keys: [:mobile_phone, :language_id, :first_name, :last_name, :picture, :picture_delete])
+    devise_parameter_sanitizer.permit(:account_update, keys: [:mobile_phone, :language_id, :first_name, :last_name, :picture, :picture_infos, :picture_delete])
   end
 end
diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb
index ee0c153b72520bf45c23f6c8e6a1a969faf6ce07..56b1081e0a1054dc6521326ab2e14c12c895eab7 100644
--- a/app/views/devise/registrations/edit.html.erb
+++ b/app/views/devise/registrations/edit.html.erb
@@ -29,6 +29,7 @@
                   as: :single_deletable_file,
                   input_html: { accept: '.jpg,.jpeg,.png' },
                   preview: 200,
+                  resize: 1,
                   direct_upload: true %>
       <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
         <p><%= t(".currently_waiting_confirmation_for_email", email: resource.unconfirmed_email) %></p>
diff --git a/package.json b/package.json
index 587e1568842c4caee453f500facc75fb3cbe709a..bd3625599ae25d10135b1465627301fb0e033422 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,7 @@
 {
   "dependencies": {
+    "cropperjs": "^1.5.12",
+    "jquery-cropper": "^1.0.1",
     "notyf": "^3.10.0"
   }
 }
diff --git a/yarn.lock b/yarn.lock
index a4bd56507f4daa37ac7fa233e781f35cdf13290b..84aaabbb8f7b09ba78dc2b0444a5bf1c1b61d3ac 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,16 @@
 # yarn lockfile v1
 
 
+cropperjs@^1.5.12:
+  version "1.5.12"
+  resolved "https://registry.yarnpkg.com/cropperjs/-/cropperjs-1.5.12.tgz#d9c0db2bfb8c0d769d51739e8f916bbc44e10f50"
+  integrity sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==
+
+jquery-cropper@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/jquery-cropper/-/jquery-cropper-1.0.1.tgz#6ba9faf1c2c86c0ac3c648d40554ba53673113cf"
+  integrity sha512-KGlY8b0IJQi2Bxe3lqMKmd5Z2Ce4GrnDE5O8Iciza9xCzXISkL6EqX/jFHwnLL1H6Q4FGjoRguuv3lxezsbKJQ==
+
 notyf@^3.10.0:
   version "3.10.0"
   resolved "https://registry.yarnpkg.com/notyf/-/notyf-3.10.0.tgz#67a64443c69ea0e6495c56ea0f91198860163d06"