/**
  * Crops vertically this rectangle by increasing top side and/or reducing the bottom side.
  *
  * @param int $pixels - the amount to substract from the height
  * @param string $coi - a 4 character string (or null) containing the center of interest
  */
 function crop_v($pixels, $coi)
 {
     if ($this->height() <= $pixels) {
         return;
     }
     $tlcrop = floor($pixels / 2);
     if (!empty($coi)) {
         $coit = floor($this->b * char_to_fraction($coi[1]));
         $coib = ceil($this->b * char_to_fraction($coi[3]));
         $availableT = $coit > $this->t ? $coit - $this->t : 0;
         $availableB = $coib < $this->b ? $this->b - $coib : 0;
         if ($availableT + $availableB >= $pixels) {
             if ($availableT < $tlcrop) {
                 $tlcrop = $availableT;
             } elseif ($availableB < $tlcrop) {
                 $tlcrop = $pixels - $availableB;
             }
         }
     }
     $this->t += $tlcrop;
     $this->b -= $pixels - $tlcrop;
 }
Example #2
0
File: i.php Project: donseba/Piwigo
function parse_custom_params($tokens)
{
    if (count($tokens) < 1) {
        ierror('Empty array while parsing Sizing', 400);
    }
    $crop = 0;
    $min_size = null;
    $token = array_shift($tokens);
    if ($token[0] == 's') {
        $size = url_to_size(substr($token, 1));
    } elseif ($token[0] == 'e') {
        $crop = 1;
        $size = $min_size = url_to_size(substr($token, 1));
    } else {
        $size = url_to_size($token);
        if (count($tokens) < 2) {
            ierror('Sizing arr', 400);
        }
        $token = array_shift($tokens);
        $crop = char_to_fraction($token);
        $token = array_shift($tokens);
        $min_size = url_to_size($token);
    }
    return new DerivativeParams(new SizingParams($size, $crop, $min_size));
}
Example #3
0
$query = 'SELECT * FROM ' . IMAGES_TABLE . ' WHERE id=' . $_GET['image_id'];
$row = pwg_db_fetch_assoc(pwg_query($query));
if (isset($_POST['submit'])) {
    foreach (ImageStdParams::get_defined_type_map() as $params) {
        if ($params->sizing->max_crop != 0) {
            delete_element_derivatives($row, $params->type);
        }
    }
    delete_element_derivatives($row, IMG_CUSTOM);
    $uid = '&b=' . time();
    $conf['question_mark_in_urls'] = $conf['php_extension_in_urls'] = true;
    if ($conf['derivative_url_style'] == 1) {
        $conf['derivative_url_style'] = 0;
        //auto
    }
} else {
    $uid = '';
}
$tpl_var = array('TITLE' => render_element_name($row), 'ALT' => $row['file'], 'U_IMG' => DerivativeImage::url(IMG_LARGE, $row));
if (!empty($row['coi'])) {
    $tpl_var['coi'] = array('l' => char_to_fraction($row['coi'][0]), 't' => char_to_fraction($row['coi'][1]), 'r' => char_to_fraction($row['coi'][2]), 'b' => char_to_fraction($row['coi'][3]));
}
foreach (ImageStdParams::get_defined_type_map() as $params) {
    if ($params->sizing->max_crop != 0) {
        $derivative = new DerivativeImage($params, new SrcImage($row));
        $template->append('cropped_derivatives', array('U_IMG' => $derivative->get_url() . $uid, 'HTM_SIZE' => $derivative->get_size_htm()));
    }
}
$template->assign($tpl_var);
$template->set_filename('picture_coi', 'picture_coi.tpl');
$template->assign_var_from_handle('ADMIN_CONTENT', 'picture_coi');