diff --git a/odoo/addons/base/tests/test_image.py b/odoo/addons/base/tests/test_image.py
index 1b92a829e35846e35d674e702592339d80df8ea5..48fc10f9bf76c6dd764b256e29aeaa22100cafef 100644
--- a/odoo/addons/base/tests/test_image.py
+++ b/odoo/addons/base/tests/test_image.py
@@ -166,7 +166,7 @@ class TestImage(TransactionCase):
         res = tools.image_process(self.base64_1920x1080_jpeg, verify_resolution=True)
         self.assertNotEqual(res, False, "size ok")
         base64_image_excessive = tools.image_to_base64(Image.new('RGB', (50001, 1000)), 'PNG')
-        with self.assertRaises(ValueError, msg="size excessive"):
+        with self.assertRaises(UserError, msg="size excessive"):
             tools.image_process(base64_image_excessive, verify_resolution=True)
 
     def test_13_image_process_quality(self):
diff --git a/odoo/tools/image.py b/odoo/tools/image.py
index e70303bba1ea93f5e0c0b9a326b87ed1e0b4911b..ecbab85fc0e7c22fc1722242e1ef57a8f4bb5f3c 100644
--- a/odoo/tools/image.py
+++ b/odoo/tools/image.py
@@ -90,7 +90,7 @@ class ImageProcess():
 
             w, h = self.image.size
             if verify_resolution and w * h > IMAGE_MAX_RESOLUTION:
-                raise ValueError(_("Image size excessive, uploaded images must be smaller than %s million pixels.", str(IMAGE_MAX_RESOLUTION / 1e6)))
+                raise UserError(_("Image size excessive, uploaded images must be smaller than %s million pixels.", str(IMAGE_MAX_RESOLUTION / 1e6)))
 
     def image_quality(self, quality=0, output_format=''):
         """Return the image resulting of all the image processing