bug 2682: Watermark sizing calculation is made on the requested size not on the final one

git-svn-id: http://piwigo.org/svn/trunk@16989 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
rvelices 2012-07-24 20:49:31 +00:00
parent 9571cf5e45
commit 7502b3bbee
3 changed files with 17 additions and 5 deletions

9
i.php
View file

@ -104,6 +104,7 @@ function ierror($msg, $code)
header('Request-URI: '.$url);
header('Content-Location: '.$url);
header('Location: '.$url);
ilog('WARN', $code, $url, $_SERVER['REQUEST_URI']);
exit;
}
if ($code>=400)
@ -203,7 +204,7 @@ function parse_request()
{
preg_match($conf['sync_chars_regex'], $token) or ierror('Invalid chars in request', 400);
}
$page['derivative_path'] = PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$req;
$pos = strrpos($req, '.');
@ -452,7 +453,7 @@ SELECT *
FROM '.$prefixeTable.'images
WHERE path=\''.$page['src_location'].'\'
;';
if ( ($row=pwg_db_fetch_assoc(pwg_query($query))) )
{
if (isset($row['width']))
@ -464,7 +465,7 @@ SELECT *
if (!isset($row['rotation']))
{
$page['rotation_angle'] = pwg_image::get_rotation_angle($page['src_path']);
single_update(
$prefixeTable.'images',
array('rotation' => pwg_image::get_rotation_code_from_angle($page['rotation_angle'])),
@ -540,7 +541,7 @@ if ($params->sharpen)
$timing['sharpen'] = time_step($step);
}
if ($params->use_watermark)
if ($params->will_watermark($d_size))
{
$wm = ImageStdParams::get_watermark();
$wm_image = new pwg_image(PHPWG_ROOT_PATH.$wm->file);

View file

@ -197,7 +197,7 @@ final class DerivativeImage
{
if ( $src->has_size() && $params->is_identity( $src->get_size() ) )
{
if (!$params->use_watermark && !$src->rotation)
if (!$params->will_watermark($src->get_size()) && !$src->rotation)
{
$params = null;
$rel_path = $rel_url = $src->rel_path;

View file

@ -281,5 +281,16 @@ final class DerivativeParams
}
return true;
}
function will_watermark($out_size)
{
if ($this->use_watermark)
{
$min_size = ImageStdParams::get_watermark()->min_size;
return $min_size[0]<=$out_size[0]
&& $min_size[1]<=$$out_size[1];
}
return false;
}
}
?>