function file_validate_image_resolution

Same name and namespace in other branches
  1. 9 core/modules/file/file.module \file_validate_image_resolution()
  2. 8.9.x core/modules/file/file.module \file_validate_image_resolution()
  3. 10 core/modules/file/file.module \file_validate_image_resolution()

Verifies that image dimensions are within the specified maximum and minimum.

Non-image files will be ignored. If an image toolkit is available the image will be scaled to fit within the desired maximum dimensions.

Parameters

$file: A Drupal file object. This function may resize the file affecting its size.

$maximum_dimensions: An optional string in the form WIDTHxHEIGHT e.g. '640x480' or '85x85'. If an image toolkit is installed the image will be resized down to these dimensions. A value of 0 indicates no restriction on size, so resizing will be attempted.

$minimum_dimensions: An optional string in the form WIDTHxHEIGHT. This will check that the image meets a minimum size. A value of 0 indicates no restriction.

Return value

An array. If the file is an image and did not meet the requirements, it will contain an error message.

See also

hook_file_validate()

Related topics

1 call to file_validate_image_resolution()
FileValidatorTest::testFileValidateImageResolution in modules/simpletest/tests/file.test
This ensures the resolution of a specific file is within bounds. The image will be resized if it's too large.

File

includes/file.inc, line 1895

Code

function file_validate_image_resolution(stdClass $file, $maximum_dimensions = 0, $minimum_dimensions = 0) {
    $errors = array();
    // Check first that the file is an image.
    if ($info = image_get_info($file->uri)) {
        if ($maximum_dimensions) {
            // Check that it is smaller than the given dimensions.
            list($width, $height) = explode('x', $maximum_dimensions);
            if ($info['width'] > $width || $info['height'] > $height) {
                // Try to resize the image to fit the dimensions.
                if ($image = image_load($file->uri)) {
                    image_scale($image, $width, $height);
                    image_save($image);
                    // Update the image info since we have resized it.
                    $info = $image->info;
                    $file->filesize = $image->info['file_size'];
                    drupal_set_message(t('The image was resized to fit within the maximum allowed dimensions of %dimensions pixels.', array(
                        '%dimensions' => $maximum_dimensions,
                    )));
                }
                else {
                    $errors[] = t('The image is too large; the maximum dimensions are %dimensions pixels.', array(
                        '%dimensions' => $maximum_dimensions,
                    ));
                }
            }
        }
        if ($minimum_dimensions) {
            // Check that it is larger than the given dimensions.
            list($width, $height) = explode('x', $minimum_dimensions);
            if ($info['width'] < $width || $info['height'] < $height) {
                $errors[] = t('The image is too small; the minimum dimensions are %dimensions pixels.', array(
                    '%dimensions' => $minimum_dimensions,
                ));
            }
        }
    }
    return $errors;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.