You are here

function manualcrop_crop_and_scale_effect in Manual Crop 7

Image effect callback; Crop and scale an image resource.

Parameters

$image: An image object returned by image_load().

$data: An array of attributes, needed to perform the crop and scale effect, with the following items:

  • "width": An integer representing the desired width in pixels.
  • "height": An integer representing the desired height in pixels.
  • "upscale": A boolean indicating that the image should be upscaled if the dimensions are larger than the original image.
  • "onlyscaleifcrop": A boolean indicating that the image should only be scaled if it was cropped.
  • "style_name": The style's machine name.

Return value

TRUE on success, FALSE on failure to crop and scale image.

See also

image_crop_effect()

image_scale_effect()

1 string reference to 'manualcrop_crop_and_scale_effect'
manualcrop_image_effect_info in ./manualcrop.module
Implements hook_image_effect_info().

File

./manualcrop.module, line 817

Code

function manualcrop_crop_and_scale_effect(&$image, $data) {

  // The width and height will be possibly overwritten for the cropping,
  // so copy the data array for later.
  $scale_data = $data;
  $crop = manualcrop_load_crop_selection($image->source, $data['style_name']);
  if ($crop) {

    // Only crop if a crop was applied.
    $data['width'] = $crop->width;
    $data['height'] = $crop->height;
    $data['anchor'] = $crop->x . '-' . $crop->y;
    if (!image_crop_effect($image, $data)) {
      return FALSE;
    }
  }
  elseif (!empty($data['onlyscaleifcrop'])) {
    return TRUE;
  }
  else {

    // Automated crop, don't use image_scale_and_crop_effect() unless
    // upscaling is allowed or both image dimensions are bigger than
    // the desired dimensions.
    if ($scale_data['upscale'] || $image->info['width'] > $scale_data['width'] && $image->info['height'] > $scale_data['height']) {
      if (!image_scale_and_crop_effect($image, $scale_data)) {
        return FALSE;
      }
    }
    else {
      if (!image_crop_effect($image, $scale_data)) {
        return FALSE;
      }
    }
  }
  return image_scale_effect($image, $scale_data);
}