fix 1 pixel rounding errors when generating multi size from another multi size

git-svn-id: http://piwigo.org/svn/trunk@25793 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
rvelices 2013-12-05 20:53:18 +00:00
parent 989d3af765
commit ca8e0928e3

18
i.php
View file

@ -284,9 +284,9 @@ function parse_request()
function try_switch_source(DerivativeParams $params, $original_mtime) function try_switch_source(DerivativeParams $params, $original_mtime)
{ {
global $page; global $page;
$original_size = null; if (!isset($page['original_size']))
if (isset($page['original_size'])) return false;
{
$original_size = $page['original_size']; $original_size = $page['original_size'];
if ($page['rotation_angle']==90 || $page['rotation_angle']==270) if ($page['rotation_angle']==90 || $page['rotation_angle']==270)
{ {
@ -294,14 +294,11 @@ function try_switch_source(DerivativeParams $params, $original_mtime)
$original_size[0] = $original_size[1]; $original_size[0] = $original_size[1];
$original_size[1] = $tmp; $original_size[1] = $tmp;
} }
} $dsize = $params->compute_final_size($original_size);
$use_watermark = $params->use_watermark; $use_watermark = $params->use_watermark;
if ($use_watermark) if ($use_watermark)
{ {
if (!isset($original_size))
return false; // cannot really know if a watermark is required
$dsize = $params->compute_final_size($original_size);
$use_watermark = $params->will_watermark($dsize); $use_watermark = $params->will_watermark($dsize);
} }
@ -314,6 +311,10 @@ function try_switch_source(DerivativeParams $params, $original_mtime)
continue; continue;
if ($candidate->max_width() < $params->max_width() || $candidate->max_height() < $params->max_height()) if ($candidate->max_width() < $params->max_width() || $candidate->max_height() < $params->max_height())
continue; continue;
$candidate_size = $candidate->compute_final_size($original_size);
if ($dsize != $params->compute_final_size($candidate_size))
continue;
if ($params->sizing->max_crop==0) if ($params->sizing->max_crop==0)
{ {
if ($candidate->sizing->max_crop!=0) if ($candidate->sizing->max_crop!=0)
@ -323,9 +324,6 @@ function try_switch_source(DerivativeParams $params, $original_mtime)
{ {
if ($candidate->sizing->max_crop!=0) if ($candidate->sizing->max_crop!=0)
continue; // this could be optimized continue; // this could be optimized
if (!isset($original_size))
continue;
$candidate_size = $candidate->compute_final_size($original_size);
if ($candidate_size[0] < $params->sizing->min_size[0] || $candidate_size[1] < $params->sizing->min_size[1] ) if ($candidate_size[0] < $params->sizing->min_size[0] || $candidate_size[1] < $params->sizing->min_size[1] )
continue; continue;
} }