mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-07-21 09:03:38 +02:00
feature 2548, multiple size:
* adapt the upload script * remove the resize settings screen * add a new screen [Administration > Configuration > Options > Photo Sizes] with the ability to resize original after upload git-svn-id: http://piwigo.org/svn/trunk@12879 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -32,110 +32,36 @@ function get_upload_form_config()
|
||||
{
|
||||
// default configuration for upload
|
||||
$upload_form_config = array(
|
||||
'websize_resize' => array(
|
||||
'default' => true,
|
||||
'can_be_null' => false,
|
||||
),
|
||||
|
||||
'websize_maxwidth' => array(
|
||||
'default' => 800,
|
||||
'min' => 100,
|
||||
'max' => 1600,
|
||||
'pattern' => '/^\d+$/',
|
||||
'can_be_null' => true,
|
||||
'error_message' => l10n('The websize maximum width must be a number between %d and %d'),
|
||||
),
|
||||
|
||||
'websize_maxheight' => array(
|
||||
'default' => 600,
|
||||
'min' => 100,
|
||||
'max' => 1200,
|
||||
'pattern' => '/^\d+$/',
|
||||
'can_be_null' => true,
|
||||
'error_message' => l10n('The websize maximum height must be a number between %d and %d'),
|
||||
),
|
||||
|
||||
'websize_quality' => array(
|
||||
'default' => 95,
|
||||
'min' => 50,
|
||||
'max' => 100,
|
||||
'pattern' => '/^\d+$/',
|
||||
'can_be_null' => false,
|
||||
'error_message' => l10n('The websize image quality must be a number between %d and %d'),
|
||||
),
|
||||
|
||||
'thumb_maxwidth' => array(
|
||||
'default' => 128,
|
||||
'min' => 50,
|
||||
'max' => 300,
|
||||
'pattern' => '/^\d+$/',
|
||||
'can_be_null' => false,
|
||||
'error_message' => l10n('The thumbnail maximum width must be a number between %d and %d'),
|
||||
),
|
||||
|
||||
'thumb_maxheight' => array(
|
||||
'default' => 96,
|
||||
'min' => 50,
|
||||
'max' => 300,
|
||||
'pattern' => '/^\d+$/',
|
||||
'can_be_null' => false,
|
||||
'error_message' => l10n('The thumbnail maximum height must be a number between %d and %d'),
|
||||
),
|
||||
|
||||
'thumb_quality' => array(
|
||||
'default' => 95,
|
||||
'min' => 50,
|
||||
'max' => 100,
|
||||
'pattern' => '/^\d+$/',
|
||||
'can_be_null' => false,
|
||||
'error_message' => l10n('The thumbnail image quality must be a number between %d and %d'),
|
||||
),
|
||||
|
||||
'thumb_crop' => array(
|
||||
'default' => false,
|
||||
'can_be_null' => false,
|
||||
),
|
||||
|
||||
'thumb_follow_orientation' => array(
|
||||
'default' => true,
|
||||
'can_be_null' => false,
|
||||
),
|
||||
|
||||
'hd_keep' => array(
|
||||
'default' => true,
|
||||
'can_be_null' => false,
|
||||
),
|
||||
|
||||
'hd_resize' => array(
|
||||
'original_resize' => array(
|
||||
'default' => false,
|
||||
'can_be_null' => false,
|
||||
),
|
||||
|
||||
'hd_maxwidth' => array(
|
||||
'original_resize_maxwidth' => array(
|
||||
'default' => 2000,
|
||||
'min' => 500,
|
||||
'max' => 20000,
|
||||
'pattern' => '/^\d+$/',
|
||||
'can_be_null' => false,
|
||||
'error_message' => l10n('The high definition maximum width must be a number between %d and %d'),
|
||||
'error_message' => l10n('The original maximum width must be a number between %d and %d'),
|
||||
),
|
||||
|
||||
'hd_maxheight' => array(
|
||||
'original_resize_maxheight' => array(
|
||||
'default' => 2000,
|
||||
'min' => 500,
|
||||
'min' => 300,
|
||||
'max' => 20000,
|
||||
'pattern' => '/^\d+$/',
|
||||
'can_be_null' => false,
|
||||
'error_message' => l10n('The high definition maximum height must be a number between %d and %d'),
|
||||
'error_message' => l10n('The original maximum height must be a number between %d and %d'),
|
||||
),
|
||||
|
||||
'hd_quality' => array(
|
||||
'original_resize_quality' => array(
|
||||
'default' => 95,
|
||||
'min' => 50,
|
||||
'max' => 100,
|
||||
'max' => 98,
|
||||
'pattern' => '/^\d+$/',
|
||||
'can_be_null' => false,
|
||||
'error_message' => l10n('The high definition image quality must be a number between %d and %d'),
|
||||
'error_message' => l10n('The original image quality must be a number between %d and %d'),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -170,14 +96,14 @@ function save_upload_form_config($data, &$errors=array())
|
||||
}
|
||||
|
||||
$updates[] = array(
|
||||
'param' => 'upload_form_'.$field,
|
||||
'param' => $field,
|
||||
'value' => boolean_to_string($value)
|
||||
);
|
||||
}
|
||||
elseif ($upload_form_config[$field]['can_be_null'] and empty($value))
|
||||
{
|
||||
$updates[] = array(
|
||||
'param' => 'upload_form_'.$field,
|
||||
'param' => $field,
|
||||
'value' => 'false'
|
||||
);
|
||||
}
|
||||
@@ -190,7 +116,7 @@ function save_upload_form_config($data, &$errors=array())
|
||||
if (preg_match($pattern, $value) and $value >= $min and $value <= $max)
|
||||
{
|
||||
$updates[] = array(
|
||||
'param' => 'upload_form_'.$field,
|
||||
'param' => $field,
|
||||
'value' => $value
|
||||
);
|
||||
}
|
||||
@@ -226,16 +152,11 @@ function save_upload_form_config($data, &$errors=array())
|
||||
|
||||
function add_uploaded_file($source_filepath, $original_filename=null, $categories=null, $level=null, $image_id=null)
|
||||
{
|
||||
// Here is the plan
|
||||
//
|
||||
// 1) move uploaded file to upload/2010/01/22/20100122003814-449ada00.jpg
|
||||
//
|
||||
// 2) if taller than max_height or wider than max_width, move to pwg_high
|
||||
// + web sized creation
|
||||
// 2) keep/resize original
|
||||
//
|
||||
// 3) thumbnail creation from web sized
|
||||
//
|
||||
// 4) register in database
|
||||
// 3) register in database
|
||||
|
||||
// TODO
|
||||
// * check md5sum (already exists?)
|
||||
@@ -247,7 +168,7 @@ function add_uploaded_file($source_filepath, $original_filename=null, $categorie
|
||||
|
||||
if (isset($image_id))
|
||||
{
|
||||
// we are performing an update
|
||||
// this photo already exists, we update it
|
||||
$query = '
|
||||
SELECT
|
||||
path
|
||||
@@ -316,83 +237,35 @@ SELECT
|
||||
copy($source_filepath, $file_path);
|
||||
}
|
||||
|
||||
if ($conf['upload_form_websize_resize']
|
||||
and need_resize($file_path, $conf['upload_form_websize_maxwidth'], $conf['upload_form_websize_maxheight']))
|
||||
if (pwg_image::get_library() != 'gd')
|
||||
{
|
||||
$high_path = file_path_for_type($file_path, 'high');
|
||||
$high_dir = dirname($high_path);
|
||||
prepare_directory($high_dir);
|
||||
|
||||
rename($file_path, $high_path);
|
||||
$high_infos = pwg_image_infos($high_path);
|
||||
|
||||
$img = new pwg_image($high_path);
|
||||
|
||||
$img->pwg_resize(
|
||||
$file_path,
|
||||
$conf['upload_form_websize_maxwidth'],
|
||||
$conf['upload_form_websize_maxheight'],
|
||||
$conf['upload_form_websize_quality'],
|
||||
$conf['upload_form_automatic_rotation'],
|
||||
false
|
||||
);
|
||||
|
||||
if ($img->library != 'gd')
|
||||
if ($conf['original_resize'])
|
||||
{
|
||||
if ($conf['upload_form_hd_keep'])
|
||||
$need_resize = need_resize($file_path, $conf['original_resize_maxwidth'], $conf['original_resize_maxheight']);
|
||||
|
||||
if ($need_resize)
|
||||
{
|
||||
if ($conf['upload_form_hd_resize'])
|
||||
{
|
||||
$need_resize = need_resize($high_path, $conf['upload_form_hd_maxwidth'], $conf['upload_form_hd_maxheight']);
|
||||
$img = new pwg_image($file_path);
|
||||
|
||||
$img->pwg_resize(
|
||||
$file_path,
|
||||
$conf['original_resize_maxwidth'],
|
||||
$conf['original_resize_maxheight'],
|
||||
$conf['original_resize_quality'],
|
||||
$conf['upload_form_automatic_rotation'],
|
||||
false
|
||||
);
|
||||
|
||||
if ($need_resize)
|
||||
{
|
||||
$img->pwg_resize(
|
||||
$high_path,
|
||||
$conf['upload_form_hd_maxwidth'],
|
||||
$conf['upload_form_hd_maxheight'],
|
||||
$conf['upload_form_hd_quality'],
|
||||
$conf['upload_form_automatic_rotation'],
|
||||
false
|
||||
);
|
||||
$high_infos = pwg_image_infos($high_path);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
unlink($high_path);
|
||||
$high_infos = null;
|
||||
$img->destroy();
|
||||
}
|
||||
}
|
||||
$img->destroy();
|
||||
}
|
||||
|
||||
$file_infos = pwg_image_infos($file_path);
|
||||
|
||||
$thumb_path = file_path_for_type($file_path, 'thumb');
|
||||
$thumb_dir = dirname($thumb_path);
|
||||
prepare_directory($thumb_dir);
|
||||
|
||||
$img = new pwg_image($file_path);
|
||||
$img->pwg_resize(
|
||||
$thumb_path,
|
||||
$conf['upload_form_thumb_maxwidth'],
|
||||
$conf['upload_form_thumb_maxheight'],
|
||||
$conf['upload_form_thumb_quality'],
|
||||
false,
|
||||
true,
|
||||
$conf['upload_form_thumb_crop'],
|
||||
$conf['upload_form_thumb_follow_orientation']
|
||||
);
|
||||
$img->destroy();
|
||||
|
||||
$thumb_infos = pwg_image_infos($thumb_path);
|
||||
|
||||
if (isset($image_id))
|
||||
{
|
||||
$update = array(
|
||||
'id' => $image_id,
|
||||
'file' => pwg_db_real_escape_string(isset($original_filename) ? $original_filename : basename($file_path)),
|
||||
'filesize' => $file_infos['filesize'],
|
||||
'width' => $file_infos['width'],
|
||||
@@ -401,33 +274,15 @@ SELECT
|
||||
'added_by' => $user['id'],
|
||||
);
|
||||
|
||||
if (isset($high_infos))
|
||||
{
|
||||
$update['has_high'] = 'true';
|
||||
$update['high_filesize'] = $high_infos['filesize'];
|
||||
$update['high_width'] = $high_infos['width'];
|
||||
$update['high_height'] = $high_infos['height'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$update['has_high'] = 'false';
|
||||
$update['high_filesize'] = null;
|
||||
$update['high_width'] = null;
|
||||
$update['high_height'] = null;
|
||||
}
|
||||
|
||||
if (isset($level))
|
||||
{
|
||||
$update['level'] = $level;
|
||||
}
|
||||
|
||||
mass_updates(
|
||||
single_update(
|
||||
IMAGES_TABLE,
|
||||
array(
|
||||
'primary' => array('id'),
|
||||
'update' => array_keys($update)
|
||||
),
|
||||
array($update)
|
||||
$update,
|
||||
array('id' => $image_id)
|
||||
);
|
||||
}
|
||||
else
|
||||
@@ -457,12 +312,8 @@ SELECT
|
||||
{
|
||||
$insert['level'] = $level;
|
||||
}
|
||||
|
||||
mass_inserts(
|
||||
IMAGES_TABLE,
|
||||
array_keys($insert),
|
||||
array($insert)
|
||||
);
|
||||
|
||||
single_insert(IMAGES_TABLE, $insert);
|
||||
|
||||
$image_id = pwg_db_insert_id(IMAGES_TABLE);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user