From b7bdd227732e1bcaad5bc7b290ec65b8fe25b475 Mon Sep 17 00:00:00 2001 From: plegall Date: Mon, 28 Jun 2010 20:57:35 +0000 Subject: bug 1701 fixed: support for PNG file in browser direct upload. If the picture is a PNG file, then the "web size" picture is also a PNG file but the thumbnail is always a JPEG file. git-svn-id: http://piwigo.org/svn/branches/2.1@6616 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/include/functions_upload.inc.php | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'admin/include') diff --git a/admin/include/functions_upload.inc.php b/admin/include/functions_upload.inc.php index c00e73b93..a52142d0c 100644 --- a/admin/include/functions_upload.inc.php +++ b/admin/include/functions_upload.inc.php @@ -42,7 +42,17 @@ function add_uploaded_file($source_filepath, $original_filename=null, $categorie $date_string = preg_replace('/[^\d]/', '', $dbnow); $random_string = substr($md5sum, 0, 8); $filename_wo_ext = $date_string.'-'.$random_string; - $file_path = $upload_dir.'/'.$filename_wo_ext.'.jpg'; + $file_path = $upload_dir.'/'.$filename_wo_ext.'.'; + + list($width, $height, $type) = getimagesize($source_filepath); + if (IMAGETYPE_PNG == $type) + { + $file_path.= 'png'; + } + else + { + $file_path.= 'jpg'; + } prepare_directory($upload_dir); if (is_uploaded_file($source_filepath)) @@ -198,11 +208,11 @@ function pwg_image_resize($result, $source_filepath, $destination_filepath, $max $source_image = null; if (in_array($extension, array('jpg', 'jpeg'))) { - $source_image = @imagecreatefromjpeg($source_filepath); + $source_image = imagecreatefromjpeg($source_filepath); } else if ($extension == 'png') { - $source_image = @imagecreatefrompng($source_filepath); + $source_image = imagecreatefrompng($source_filepath); } else { @@ -252,7 +262,15 @@ function pwg_image_resize($result, $source_filepath, $destination_filepath, $max $source_height ); - imagejpeg($destination_image, $destination_filepath, $quality); + $extension = strtolower(get_extension($destination_filepath)); + if ($extension == 'png') + { + imagepng($destination_image, $destination_filepath); + } + else + { + imagejpeg($destination_image, $destination_filepath, $quality); + } // freeing memory ressources imagedestroy($source_image); imagedestroy($destination_image); -- cgit v1.2.3