diff --git a/main/document/slideshow.php b/main/document/slideshow.php index ebb26d1021..aa9dba4aea 100644 --- a/main/document/slideshow.php +++ b/main/document/slideshow.php @@ -178,21 +178,100 @@ if (isset($_SESSION["image_resizing"]) && $_SESSION["image_resizing"] == "resiz // This is for viewing all the images in the slideshow as thumbnails. $image_tag = array (); if ($slide_id == 'all') { - $thumbnail_width = 100; - $thumbnail_height = 100; - $row_items = 4; + + // Create the template_thumbnails folder (if no exist) + if (!$sys_course_path.$_course['path'].'/document'.$folder.'.thumbs/') { + @mkdir($sys_course_path.$_course['path'].'/document'.$folder.'.thumbs/', api_get_permissions_for_new_directories()); + } + + // Config thumbnails + $allowed_types = array('jpg','jpeg','gif','png','bmp');//TODO:check bellow image_files_only + $max_thumbnail_width = 100; + $max_thumbnail_height = 100; + $compression = 85; + $row_items = 4; + + + // check files and thumbnails if (is_array($image_files_only)) { foreach ($image_files_only as $one_image_file) { $image = $sys_course_path.$_course['path'].'/document'.$folder.$one_image_file; + $image_thumbnail= $sys_course_path.$_course['path'].'/document'.$folder.'.thumbs/.'.$one_image_file; + if (file_exists($image)) { - $image_height_width = resize_image($image, $thumbnail_width, $thumbnail_height, 1); - - $image_height = $image_height_width[0]; - $image_width = $image_height_width[1]; - - $doc_url = ($path && $path !== '/') ? $path.'/'.$one_image_file : $path.$one_image_file; - - $image_tag[] = ''; + //check thumbnail + $imagetype = explode(".", $image); + $imagetype = strtolower($imagetype[count($imagetype)-1]); + + if(in_array($imagetype,$allowed_types)) { + + if (!file_exists($image_thumbnail)){ + + $original_image_size = api_getimagesize($image); + switch($imagetype) { + case 'gif': + $source_img = imagecreatefromgif($image); + break; + case 'jpg': + $source_img = imagecreatefromjpeg($image); + break; + case 'png': + $source_img = imagecreatefrompng($image); + break; + case 'bmp': + $source_img = imagecreatefromwbmp($image);//TODO:check this + break; + } + + $new_thumbnail_size = api_calculate_image_size($original_image_size['width'], $original_image_size['height'], $max_thumbnail_width, $max_thumbnail_height); + $crop = imagecreatetruecolor($new_thumbnail_size['width'], $new_thumbnail_size['height']); + + // preserve transparency + if($imagetype == "gif" or $imagetype == "png"){ + imagecolortransparent($crop, imagecolorallocatealpha($crop, 0, 0, 0, 127)); + //imagealphablending($crop, false);//TODO:check enabled + //imagesavealpha($crop, true);//TODO:check enabled + + //other method + /* + //preserve transparency gif and png + $transindex = imagecolortransparent($image); + + if($transindex >= 0) + { + $transcol = imagecolorsforindex($image, $transindex); + $transindex = imagecolorallocatealpha($crop, $transcol['red'], $transcol['green'], $transcol['blue'], 127); + imagefill($crop, 0, 0, $transindex); + imagecolortransparent($crop, $transindex); + } + + elseif ($imagetype == "png") + { + imagealphablending($crop, false); + $color = imagecolorallocatealpha($crop, 0, 0, 0, 127); + imagefill($crop, 0, 0, $color); + imagesavealpha($crop, true); + } +*/ + } + + imagecopyresampled($crop,$source_img,0,0,0,0,$new_thumbnail_size['width'],$new_thumbnail_size['height'],$original_image_size['width'],$original_image_size['height']); + imagejpeg($crop,$image_thumbnail,$compression); + } + $one_image_thumbnail_file='.thumbs/.'.$one_image_file;//get path thumbnail + + //show thumbnail and link + $doc_url = ($path && $path !== '/') ? $path.'/'.$one_image_thumbnail_file : $path.$one_image_thumbnail_file; + $image_tag[] = ''; + } + else{ + //image format no support, get path original image + $image_height_width = resize_image($image, $thumbnail_width, $thumbnail_height, 1); + $image_height = $image_height_width[0]; + $image_width = $image_height_width[1]; + $doc_url = ($path && $path !== '/') ? $path.'/'.$one_image_file : $path.$one_image_file; + $image_tag[] = ''; + } } } }