Exemplo n.º 1
0
Arquivo: i.php Projeto: donseba/Piwigo
    $changes += $image->sharpen($params->sharpen);
    $timing['sharpen'] = time_step($step);
}
if ($params->will_watermark($d_size)) {
    $wm = ImageStdParams::get_watermark();
    $wm_image = new pwg_image(PHPWG_ROOT_PATH . $wm->file);
    $wm_size = array($wm_image->get_width(), $wm_image->get_height());
    if ($d_size[0] < $wm_size[0] or $d_size[1] < $wm_size[1]) {
        $wm_scaling_params = SizingParams::classic($d_size[0], $d_size[1]);
        $wm_scaling_params->compute($wm_size, null, $tmp, $wm_scaled_size);
        $wm_size = $wm_scaled_size;
        $wm_image->resize($wm_scaled_size[0], $wm_scaled_size[1]);
    }
    $x = round($wm->xpos / 100 * ($d_size[0] - $wm_size[0]));
    $y = round($wm->ypos / 100 * ($d_size[1] - $wm_size[1]));
    if ($image->compose($wm_image, $x, $y, $wm->opacity)) {
        $changes++;
        if ($wm->xrepeat || $wm->yrepeat) {
            $xpad = $wm_size[0] + max(30, round($wm_size[0] / 4));
            $ypad = $wm_size[1] + max(30, round($wm_size[1] / 4));
            for ($i = -$wm->xrepeat; $i <= $wm->xrepeat; $i++) {
                for ($j = -$wm->yrepeat; $j <= $wm->yrepeat; $j++) {
                    if (!$i && !$j) {
                        continue;
                    }
                    $x2 = $x + $i * $xpad;
                    $y2 = $y + $j * $ypad;
                    if ($x2 >= 0 && $x2 + $wm_size[0] < $d_size[0] && $y2 >= 0 && $y2 + $wm_size[1] < $d_size[1]) {
                        if (!$image->compose($wm_image, $x2, $y2, $wm->opacity)) {
                            break;
                        }