You are here

function epsacrop_crop_image in EPSA Crop - Image Cropping 7.2

Same name and namespace in other branches
  1. 8.2 epsacrop.module \epsacrop_crop_image()

Apply the effect to the image.

@access public

Parameters

stdClass $image:

array $settings:

Return value

void

1 string reference to 'epsacrop_crop_image'
epsacrop_image_effect_info in ./epsacrop.module
Implements hook_image_effect_info.

File

./epsacrop.module, line 405
The main file of module

Code

function epsacrop_crop_image(stdClass $image, $settings) {
  $fid = _epsacrop_get_fid_from_uri($image->source);
  if (!empty($fid) && $fid > 0) {
    $coords = _epsacrop_get_coords_from_fid($fid);
    if (is_string($coords)) {
      $coords = drupal_json_decode($coords);
      if (is_object($coords)) {
        $coords = (array) $coords;
      }
    }
    if (!empty($coords) && is_array($coords)) {
      if (isset($GLOBALS['jcrop_style'])) {
        $style_name = $GLOBALS['jcrop_style'];
      }
      else {
        $style_name = _epsacrop_get_style_name_from_url();
      }
      if (!empty($style_name)) {

        // Trigger presave hook.
        module_invoke_all('epsacrop_crop_image_presave', $image, $settings, $coords, $style_name);
        $style = _epsacrop_load_style($style_name);
        if (!empty($style)) {
          $effect = _epsacrop_get_effect($style);
          if (!empty($effect)) {
            $effect = current($effect);
            $preset = 'epsacrop-' . $style_name;
            $coord = isset($coords[$fid][$preset]) ? $coords[$fid][$preset] : '';
            if (!empty($coord)) {
              if (image_crop($image, $coord['x'], $coord['y'], $coord['w'], $coord['h'])) {

                // Trigger postsave hook.
                module_invoke_all('epsacrop_crop_image_postsave', $image, $settings, $coords, $style_name);
                if (isset($settings['disable_scale']) && $settings['disable_scale']) {
                  return TRUE;
                }
                return image_scale($image, $settings['width'], $settings['height']);
              }
            }
          }
        }
      }
    }
  }
  return empty($settings['jcrop_settings']['fallback']) ? image_crop_effect($image, $settings) : TRUE;
}