public static Image::scaleDimensions(array &$dimensions, $width = NULL, $height = NULL, $upscale = FALSE)
Scales image dimensions while maintaining aspect ratio.
The resulting dimensions can be smaller for one or both target dimensions.
Parameters
array $dimensions: Dimensions to be modified - an array with components width and height, in pixels.
int $width: (optional) The target width, in pixels. If this value is NULL then the scaling will be based only on the height value.
int $height: (optional) The target height, in pixels. If this value is NULL then the scaling will be based only on the width value.
bool $upscale: (optional) Boolean indicating that images smaller than the target dimensions will be scaled up. This generally results in a low quality image.
Return value
bool TRUE if $dimensions was modified, FALSE otherwise.
See also
image_scale()
File
- core/lib/Drupal/Component/Utility/Image.php, line 36
Class
- Image
- Provides helpers to operate on images.
Namespace
Drupal\Component\Utility
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public static function scaleDimensions( array & $dimensions , $width = NULL, $height = NULL, $upscale = FALSE) { $aspect = $dimensions [ 'height' ] / $dimensions [ 'width' ]; // Calculate one of the dimensions from the other target dimension, // ensuring the same aspect ratio as the source dimensions. If one of the // target dimensions is missing, that is the one that is calculated. If both // are specified then the dimension calculated is the one that would not be // calculated to be bigger than its target. if (( $width && ! $height ) || ( $width && $height && $aspect < $height / $width )) { $height = (int) round ( $width * $aspect ); } else { $width = (int) round ( $height / $aspect ); } // Don't upscale if the option isn't enabled. if (! $upscale && ( $width >= $dimensions [ 'width' ] || $height >= $dimensions [ 'height' ])) { return FALSE; } $dimensions [ 'width' ] = $width ; $dimensions [ 'height' ] = $height ; return TRUE; } |
Please login to continue.