From 8dc1b995863426067ff10afacea459062c71c3df Mon Sep 17 00:00:00 2001 From: plegall Date: Mon, 8 Mar 2010 23:39:53 +0000 Subject: feature 1489: integrate UploadForm into Piwigo core. The integration is not 100% done, I just "made it work" on trunk. pclzip library was updated to version 2.8.2 for memory usage improvement. git-svn-id: http://piwigo.org/svn/trunk@5089 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/include/functions_upload.inc.php | 264 +++++++++++++++++++++++++++++++++ 1 file changed, 264 insertions(+) create mode 100644 admin/include/functions_upload.inc.php (limited to 'admin/include/functions_upload.inc.php') diff --git a/admin/include/functions_upload.inc.php b/admin/include/functions_upload.inc.php new file mode 100644 index 000000000..39259ad34 --- /dev/null +++ b/admin/include/functions_upload.inc.php @@ -0,0 +1,264 @@ + isset($original_filename) ? $original_filename : basename($file_path), + 'date_available' => $dbnow, + 'tn_ext' => 'jpg', + 'path' => preg_replace('/^.*?upload/', './upload', $file_path), + 'filesize' => $file_infos['filesize'], + 'width' => $file_infos['width'], + 'height' => $file_infos['height'], + 'md5sum' => $md5sum, + ); + + if (isset($high_infos)) + { + $insert['has_high'] = 'true'; + $insert['high_filesize'] = $high_infos['filesize']; + } + + if (isset($level)) + { + $insert['level'] = $level; + } + + mass_inserts( + IMAGES_TABLE, + array_keys($insert), + array($insert) + ); + + $image_id = mysql_insert_id(); + + if (isset($categories) and count($categories) > 0) + { + associate_images_to_categories( + array($image_id), + $categories + ); + } + + // update metadata from the uploaded file (exif/iptc) + update_metadata(array($image_id=>$file_path)); + + invalidate_user_cache(); + + return $image_id; +} + +function prepare_directory($directory) +{ + if (!is_dir($directory)) { + umask(0000); + $recursive = true; + if (!@mkdir($directory, 0777, $recursive)) + { + die('[prepare_directory] cannot create directory "'.$directory.'"'); + } + } + + if (!is_writable($directory)) + { + // last chance to make the directory writable + @chmod($directory, 0777); + + if (!is_writable($directory)) + { + die('[prepare_directory] directory "'.$directory.'" has no write access'); + } + } + + secure_directory($directory); +} + +function need_resize($image_filepath, $max_width, $max_height) +{ + list($width, $height) = getimagesize($image_filepath); + + if ($width > $max_width or $height > $max_height) + { + return true; + } + + return false; +} + +function pwg_image_resize($source_filepath, $destination_filepath, $max_width, $max_height, $quality) +{ + if (!function_exists('gd_info')) + { + return false; + } + + // extension of the picture filename + $extension = strtolower(get_extension($source_filepath)); + + $source_image = null; + if (in_array($extension, array('jpg', 'jpeg'))) + { + $source_image = @imagecreatefromjpeg($source_filepath); + } + else if ($extension == 'png') + { + $source_image = @imagecreatefrompng($source_filepath); + } + else + { + die('unsupported file extension'); + } + + // width/height + $source_width = imagesx($source_image); + $source_height = imagesy($source_image); + + $ratio_width = $source_width / $max_width; + $ratio_height = $source_height / $max_height; + + // maximal size exceeded ? + if ($ratio_width > 1 or $ratio_height > 1) + { + if ($ratio_width < $ratio_height) + { + $destination_width = ceil($source_width / $ratio_height); + $destination_height = $max_height; + } + else + { + $destination_width = $max_width; + $destination_height = ceil($source_height / $ratio_width); + } + } + else + { + // the image doesn't need any resize! We just copy it to the destination + copy($source_filepath, $destination_filepath); + return true; + } + + $destination_image = imagecreatetruecolor($destination_width, $destination_height); + + imagecopyresampled( + $destination_image, + $source_image, + 0, + 0, + 0, + 0, + $destination_width, + $destination_height, + $source_width, + $source_height + ); + + imagejpeg($destination_image, $destination_filepath, $quality); + // freeing memory ressources + imagedestroy($source_image); + imagedestroy($destination_image); + + // everything should be OK if we are here! + return true; +} + +function pwg_image_infos($path) +{ + list($width, $height) = getimagesize($path); + $filesize = floor(filesize($path)/1024); + + return array( + 'width' => $width, + 'height' => $height, + 'filesize' => $filesize, + ); +} + +function is_valid_image_extension($extension) +{ + return in_array(strtolower($extension), array('jpg', 'jpeg', 'png')); +} +?> \ No newline at end of file -- cgit v1.2.3