mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-08-08 17:53:08 +02:00
multi size:
- fix external imagick issues when rotation was required - fix: derivative were generated continuosly until a first save performed in the admin screen - added sharpen param in the new config screen - increased the sharpen range (10% is less than before) git-svn-id: http://piwigo.org/svn/trunk@14649 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -97,13 +97,13 @@ foreach(ImageStdParams::get_all_types() as $type)
|
||||
{
|
||||
$errors[$type]['w'] = '>0';
|
||||
}
|
||||
|
||||
|
||||
$h = intval($pderivative['h']);
|
||||
if ($h <= 0)
|
||||
{
|
||||
$errors[$type]['h'] = '>0';
|
||||
}
|
||||
|
||||
|
||||
if (max($w,$h) <= $prev_w)
|
||||
{
|
||||
$errors[$type]['w'] = $errors[$type]['h'] = '>'.$prev_w;
|
||||
@@ -116,24 +116,33 @@ foreach(ImageStdParams::get_all_types() as $type)
|
||||
{
|
||||
$errors[$type]['w'] = '>'.$prev_w;
|
||||
}
|
||||
|
||||
|
||||
$v = intval($pderivative['h']);
|
||||
if ($v <= 0 or $v <= $prev_h)
|
||||
{
|
||||
$errors[$type]['h'] = '>'.$prev_h;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (count($errors) == 0)
|
||||
{
|
||||
$prev_w = intval($pderivative['w']);
|
||||
$prev_h = intval($pderivative['h']);
|
||||
}
|
||||
|
||||
$v = intval($pderivative['sharpen']);
|
||||
if ($v<0 || $v>100)
|
||||
{
|
||||
$errors[$type]['sharpen'] = '[0..100]';
|
||||
}
|
||||
}
|
||||
|
||||
// step 3 - save data
|
||||
if (count($errors) == 0)
|
||||
{
|
||||
$quality_changed = ImageStdParams::$quality != intval($_POST['resize_quality']);
|
||||
ImageStdParams::$quality = intval($_POST['resize_quality']);
|
||||
|
||||
$enabled = ImageStdParams::get_defined_type_map();
|
||||
$disabled = @unserialize( @$conf['disabled_derivatives'] );
|
||||
if ($disabled === false)
|
||||
@@ -145,7 +154,7 @@ if (count($errors) == 0)
|
||||
foreach (ImageStdParams::get_all_types() as $type)
|
||||
{
|
||||
$pderivative = $pderivatives[$type];
|
||||
|
||||
|
||||
if ($pderivative['enabled'])
|
||||
{
|
||||
$new_params = new DerivativeParams(
|
||||
@@ -155,11 +164,10 @@ if (count($errors) == 0)
|
||||
array(intval($pderivative['minw']), intval($pderivative['minh']))
|
||||
)
|
||||
);
|
||||
|
||||
$new_params->quality = intval($_POST['resize_quality']);
|
||||
|
||||
$new_params->sharpen = intval($pderivative['sharpen']);
|
||||
|
||||
ImageStdParams::apply_global($new_params);
|
||||
|
||||
|
||||
if (isset($enabled[$type]))
|
||||
{
|
||||
$old_params = $enabled[$type];
|
||||
@@ -169,19 +177,20 @@ if (count($errors) == 0)
|
||||
{
|
||||
$same = false;
|
||||
}
|
||||
|
||||
|
||||
if ($same
|
||||
and $new_params->sizing->max_crop != 0
|
||||
and !size_equals($old_params->sizing->min_size, $new_params->sizing->min_size))
|
||||
{
|
||||
$same = false;
|
||||
}
|
||||
|
||||
if ($new_params->quality != $old_params->quality)
|
||||
|
||||
if ($quality_changed
|
||||
|| $new_params->sharpen != $old_params->sharpen)
|
||||
{
|
||||
$same = false;
|
||||
}
|
||||
|
||||
|
||||
if (!$same)
|
||||
{
|
||||
$new_params->last_mod_time = time();
|
||||
@@ -209,7 +218,7 @@ if (count($errors) == 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$enabled_by = array(); // keys ordered by all types
|
||||
foreach(ImageStdParams::get_all_types() as $type)
|
||||
{
|
||||
@@ -218,7 +227,7 @@ if (count($errors) == 0)
|
||||
$enabled_by[$type] = $enabled[$type];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ImageStdParams::set_and_save($enabled_by);
|
||||
if (count($disabled) == 0)
|
||||
{
|
||||
@@ -230,12 +239,12 @@ if (count($errors) == 0)
|
||||
conf_update_param('disabled_derivatives', addslashes(serialize($disabled)) );
|
||||
}
|
||||
$conf['disabled_derivatives'] = serialize($disabled);
|
||||
|
||||
|
||||
if (count($changed_types))
|
||||
{
|
||||
clear_derivative_cache($changed_types);
|
||||
}
|
||||
|
||||
|
||||
array_push(
|
||||
$page['infos'],
|
||||
l10n('Your configuration settings are saved')
|
||||
@@ -256,7 +265,7 @@ else
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$template->assign('derivatives', $pderivatives);
|
||||
$template->assign('ferrors', $errors);
|
||||
$template->assign('resize_quality', $_POST['resize_quality']);
|
||||
|
||||
@@ -287,8 +287,8 @@ class pwg_image
|
||||
/** Returns a normalized convolution kernel for sharpening*/
|
||||
static function get_sharpen_matrix($amount)
|
||||
{
|
||||
// Amount should be in the range of 28-10
|
||||
$amount = round(abs(-28 + ($amount * 0.18)), 2);
|
||||
// Amount should be in the range of 48-10
|
||||
$amount = round(abs(-48 + ($amount * 0.38)), 2);
|
||||
|
||||
$matrix = array(
|
||||
array(-1, -1, -1),
|
||||
@@ -549,6 +549,12 @@ class image_ext_imagick implements imageInterface
|
||||
|
||||
function rotate($rotation)
|
||||
{
|
||||
if ($rotation==90 || $rotation==270)
|
||||
{
|
||||
$tmp = $this->width;
|
||||
$this->width = $this->height;
|
||||
$this->height = $tmp;
|
||||
}
|
||||
$this->add_command('rotate', -$rotation);
|
||||
$this->add_command('orient', 'top-left');
|
||||
return true;
|
||||
@@ -562,7 +568,6 @@ class image_ext_imagick implements imageInterface
|
||||
|
||||
function resize($width, $height)
|
||||
{
|
||||
$this->add_command('interlace', 'line');
|
||||
$this->add_command('filter', 'Lanczos');
|
||||
$this->add_command('resize', $width.'x'.$height.'!');
|
||||
return true;
|
||||
@@ -595,6 +600,8 @@ class image_ext_imagick implements imageInterface
|
||||
|
||||
function write($destination_filepath)
|
||||
{
|
||||
$this->add_command('interlace', 'line'); // progressive rendering
|
||||
|
||||
$exec = $this->imagickdir.'convert';
|
||||
$exec .= ' "'.realpath($this->source_filepath).'"';
|
||||
|
||||
@@ -611,7 +618,11 @@ class image_ext_imagick implements imageInterface
|
||||
$exec .= ' "'.realpath($dest['dirname']).'/'.$dest['basename'].'"';
|
||||
@exec($exec, $returnarray);
|
||||
|
||||
//echo($exec);
|
||||
ilog($exec);
|
||||
if (is_array($returnarray) && (count($returnarray)>0) )
|
||||
{
|
||||
ilog($returnarray);
|
||||
}
|
||||
return is_array($returnarray);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user