From c5c250bf154989d8b29b2742ab678077c1ca7274 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Jul 2011 22:51:24 +0000 Subject: [PATCH] Work on ajax file upload component. Component must be used only to make "upload" or multiupload. Output list of files must be independant of upload component because will be enhanced differently. Also, usage of upload component is more clear like that. Still TODO: Once last files was uploaded (when there is several files), we must launch the refresh of page. --- htdocs/core/ajaxfileupload.php | 58 ++++------------------------------ htdocs/lib/images.lib.php | 10 +++--- 2 files changed, 12 insertions(+), 56 deletions(-) diff --git a/htdocs/core/ajaxfileupload.php b/htdocs/core/ajaxfileupload.php index 8af04307419..3420bda0a95 100644 --- a/htdocs/core/ajaxfileupload.php +++ b/htdocs/core/ajaxfileupload.php @@ -72,18 +72,14 @@ class UploadHandler // uploaded images. You can also add additional versions with // their own upload directories: /* - 'large' => array( + 'small' => array( 'upload_dir' => dirname(__FILE__).'/files/', - 'upload_url' => dirname($_SERVER['PHP_SELF']).'/files/', - 'max_width' => 1920, - 'max_height' => 1200 + 'upload_url' => dirname($_SERVER['PHP_SELF']).'/files/' ), */ - 'thumbnail' => array( + 'thumbs' => array( 'upload_dir' => $conf->$element->dir_output . '/' . $fk_element . '/thumbs/', - 'upload_url' => DOL_URL_ROOT.'/document.php?modulepart='.$element.'&attachment=1&file=/'.$fk_element.'/thumbs/', - 'max_width' => 40, - 'max_height' => 40 + 'upload_url' => DOL_URL_ROOT.'/document.php?modulepart='.$element.'&attachment=1&file=/'.$fk_element.'/thumbs/' ) ) ); @@ -126,6 +122,7 @@ class UploadHandler * options is array('max_width', 'max_height') */ private function create_scaled_image($file_name, $options) { + global $maxwidthmini, $maxheightmini; $file_path = $this->options['upload_dir'].$file_name; $new_file_path = $options['upload_dir'].$file_name; @@ -135,51 +132,8 @@ class UploadHandler if (!$img_width || !$img_height) { return false; } - $scale = min( - $options['max_width'] / $img_width, - $options['max_height'] / $img_height - ); - if ($scale > 1) { - $scale = 1; - } - $new_width = $img_width * $scale; - $new_height = $img_height * $scale; - - $res=true; - $res=vignette($file_path,$options['max_width'],$options['max_height'],'_mini'); - /* Replaced with more efficient function vignette - $new_img = @imagecreatetruecolor($new_width, $new_height); - switch (strtolower(substr(strrchr($file_name, '.'), 1))) { - case 'jpg': - case 'jpeg': - $src_img = @imagecreatefromjpeg($file_path); - $write_image = 'imagejpeg'; - break; - case 'gif': - $src_img = @imagecreatefromgif($file_path); - $write_image = 'imagegif'; - break; - case 'png': - $src_img = @imagecreatefrompng($file_path); - $write_image = 'imagepng'; - break; - default: - $src_img = $image_method = null; - } - $success = $src_img && @imagecopyresampled( - $new_img, - $src_img, - 0, 0, 0, 0, - $new_width, - $new_height, - $img_width, - $img_height - ) && $write_image($new_img, $new_file_path); - // Free up memory (imagedestroy does not delete files): - @imagedestroy($src_img); - @imagedestroy($new_img); - */ + $res=vignette($file_path,$maxwidthmini,$maxheightmini,'_mini'); //return $success; if (preg_match('/error/i',$res)) return false; diff --git a/htdocs/lib/images.lib.php b/htdocs/lib/images.lib.php index d7841216fdb..f561fd772fb 100644 --- a/htdocs/lib/images.lib.php +++ b/htdocs/lib/images.lib.php @@ -21,7 +21,7 @@ /** * \file htdocs/lib/images.lib.php * \brief Set of function for manipulating images - * \version $Id: images.lib.php,v 1.22 2011/07/05 22:40:36 eldy Exp $ + * \version $Id: images.lib.php,v 1.23 2011/07/05 22:51:24 eldy Exp $ */ // Define size of logo small and mini @@ -275,7 +275,8 @@ function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x=0, $s // Set permissions on file if (! empty($conf->global->MAIN_UMASK)) @chmod($imgThumbName, octdec($conf->global->MAIN_UMASK)); - // Free memory + // Free memory. This does not delete image. + imagedestroy($img); imagedestroy($imgThumb); clearstatcache(); // File was replaced by a modified one, so we clear file caches. @@ -510,8 +511,9 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $ // Set permissions on file if (! empty($conf->global->MAIN_UMASK)) @chmod($imgThumbName, octdec($conf->global->MAIN_UMASK)); - // Free memory - imagedestroy($imgThumb); + // Free memory. This does not delete image. + imagedestroy($img); + imagedestroy($imgThumb); return $imgThumbName; }