diff --git a/src/applications/files/transform/PhabricatorFileImageTransform.php b/src/applications/files/transform/PhabricatorFileImageTransform.php --- a/src/applications/files/transform/PhabricatorFileImageTransform.php +++ b/src/applications/files/transform/PhabricatorFileImageTransform.php @@ -334,7 +334,8 @@ 'Unable to determine image width and height with getimagesize().')); } - $max_pixels = (4096 * 4096); + $max_pixels_array = $this->getMaxTransformDimensions(); + $max_pixels = ($max_pixels_array[0] * $max_pixels_array[1]); $img_pixels = ($width * $height); if ($img_pixels > $max_pixels) { @@ -365,6 +366,15 @@ return $this->image; } + /** + * Get maximum supported image dimensions in pixels for transforming + * + * @return array Maximum width and height + */ + public function getMaxTransformDimensions() { + return array(4096, 4096); + } + private function shouldUseImagemagick() { if (!PhabricatorEnv::getEnvConfig('files.enable-imagemagick')) { return false; diff --git a/src/applications/people/controller/PhabricatorPeopleProfilePictureController.php b/src/applications/people/controller/PhabricatorPeopleProfilePictureController.php --- a/src/applications/people/controller/PhabricatorPeopleProfilePictureController.php +++ b/src/applications/people/controller/PhabricatorPeopleProfilePictureController.php @@ -36,6 +36,15 @@ $e_file = true; $errors = array(); + // Get the image file transform. + $xform = PhabricatorFileTransform::getTransformByKey( + PhabricatorFileThumbnailTransform::TRANSFORM_PROFILE); + + // Have an hard-limit to save our resources. + $max_image_dimensions = $xform->getMaxTransformDimensions(); + $max_image_dimensions_message = pht('Maximum image dimensions: %s pixels.', + implode(mb_chr(215), $max_image_dimensions)); + if ($request->isFormPost()) { $phid = $request->getStr('phid'); $is_default = false; @@ -67,8 +76,6 @@ $e_file = pht('Not Supported'); $errors[] = $supported_formats_message; } else { - $xform = PhabricatorFileTransform::getTransformByKey( - PhabricatorFileThumbnailTransform::TRANSFORM_PROFILE); $xformed = $xform->executeTransform($file); } } @@ -254,7 +261,8 @@ ->setName('picture') ->setLabel(pht('Upload Picture')) ->setError($e_file) - ->setCaption($supported_formats_message)) + ->setCaption($supported_formats_message.' '. + $max_image_dimensions_message)) ->appendChild( id(new AphrontFormSubmitControl()) ->addCancelButton($done_uri) diff --git a/src/applications/project/controller/PhabricatorProjectEditPictureController.php b/src/applications/project/controller/PhabricatorProjectEditPictureController.php --- a/src/applications/project/controller/PhabricatorProjectEditPictureController.php +++ b/src/applications/project/controller/PhabricatorProjectEditPictureController.php @@ -35,6 +35,15 @@ $e_file = true; $errors = array(); + // Get the image file transform. + $xform = PhabricatorFileTransform::getTransformByKey( + PhabricatorFileThumbnailTransform::TRANSFORM_PROFILE); + + // Have an hard-limit to save our resources. + $max_image_dimensions = $xform->getMaxTransformDimensions(); + $max_image_dimensions_message = pht('Maximum image dimensions: %s pixels.', + implode(mb_chr(215), $max_image_dimensions)); + if ($request->isFormPost()) { $phid = $request->getStr('phid'); $is_default = false; @@ -66,8 +75,6 @@ $e_file = pht('Not Supported'); $errors[] = $supported_formats_message; } else { - $xform = PhabricatorFileTransform::getTransformByKey( - PhabricatorFileThumbnailTransform::TRANSFORM_PROFILE); $xformed = $xform->executeTransform($file); } } @@ -261,7 +268,8 @@ ->setName('picture') ->setLabel(pht('Upload Picture')) ->setError($e_file) - ->setCaption($supported_formats_message)) + ->setCaption($supported_formats_message.' '. + $max_image_dimensions_message)) ->appendChild( id(new AphrontFormSubmitControl()) ->addCancelButton($manage_uri)