function checkImages() { // if the thumbnail generation is enabled if ($this->config['generate_thumbnails'] == 1) { // basic images params $img_width = $this->config['config']->gk_game_magazine->gk_game_magazine_image_width; $img_height = $this->config['config']->gk_game_magazine->gk_game_magazine_image_height; $img_bg = $this->config['config']->gk_game_magazine->gk_game_magazine_image_bg; $quality = $this->config['config']->gk_game_magazine->gk_game_magazine_quality; // check the slides foreach ($this->config['image_show_data'] as $slide) { $stretch = $slide->stretch == 'nostretch' ? false : true; GKIS_GameMagazine_Image::createThumbnail($slide->image, $this->config, $img_width, $img_height, $img_bg, $stretch, $quality); } } }
function createThumbnail($path, $config, $width, $height, $image_bg, $image_stretch, $quality, $thumb = '') { if (GKIS_GameMagazine_Image::checkCache(GKIS_GameMagazine_Image::translateName($path, $config['module_id'], $thumb), $config['last_modification'])) { return TRUE; } else { // importing classes jimport('joomla.filesystem.file'); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.path'); //script configuration - increase memory limit to 64MB ini_set('memory_limit', '64M'); // cache dir $cache_dir = JPATH_ROOT . DS . 'modules' . DS . 'mod_image_show_gk4' . DS . 'cache' . DS; // file path $file = GKIS_GameMagazine_Image::getRealPath($path); // filename $filename = GKIS_GameMagazine_Image::translateName($path, $config['module_id']); // Getting informations about image if (is_file($file)) { $imageData = getimagesize($file); // loading image depends from type of image if ($imageData['mime'] == 'image/jpeg' || $imageData['mime'] == 'image/pjpeg' || $imageData['mime'] == 'image/jpg') { $imageSource = @imagecreatefromjpeg($file); } elseif ($imageData['mime'] == 'image/gif') { $imageSource = @imagecreatefromgif($file); } else { $imageSource = @imagecreatefrompng($file); } // here can be exist an error when image is to big - then class return blank page // setting image size in variables $imageSourceWidth = imagesx($imageSource); $imageSourceHeight = imagesy($imageSource); // Creating blank canvas $imageBG = imagecreatetruecolor($width, $height); // If image is JPG or GIF if ($imageData['mime'] == 'image/jpeg' || $imageData['mime'] == 'image/pjpeg' || $imageData['mime'] == 'image/jpg' || $imageData['mime'] == 'image/gif') { // when bg is set to transparent - use black background if ($image_bg == 'transparent') { $bgColorR = 0; $bgColorG = 0; $bgColorB = 0; } else { // in other situation - translate hex to RGB $bg = $image_bg; if (strlen($bg) == 4) { $bg = $bg[0] . $bg[1] . $bg[1] . $bg[2] . $bg[2] . $bg[3] . $bg[3]; } $hex_color = strtolower(trim($bg, '#;&Hh')); $bg = array_map('hexdec', explode('.', wordwrap($hex_color, ceil(strlen($hex_color) / 3), '.', 1))); $bgColorR = $bg[0]; $bgColorG = $bg[1]; $bgColorB = $bg[2]; } // Creating color $rgb = imagecolorallocate($imageBG, $bgColorR, $bgColorG, $bgColorB); // filling canvas with new color imagefill($imageBG, 0, 0, $rgb); } else { // for PNG images $imageBG = imagecreatetruecolor($width, $height); // enable transparent background if ($image_bg == 'transparent') { // create transparent color $rgb = imagecolorallocatealpha($imageBG, 0, 0, 0, 127); } else { // create normal color $bg = $image_bg; // translate hex to RGB $hex_color = strtolower(trim($bg, '#;&Hh')); $bg = array_map('hexdec', explode('.', wordwrap($hex_color, ceil(strlen($hex_color) / 3), '.', 1))); // creating color $rgb = imagecolorallocate($imageBG, $bg[0], $bg[1], $bg[2]); } // filling the canvas imagefill($imageBG, 0, 0, $rgb); // enabling transparent settings for better quality imagealphablending($imageBG, false); imagesavealpha($imageBG, true); } // when stretching is disabled if (!$image_stretch) { // calculate ratio for first scaling $ratio = $imageSourceWidth > $imageSourceHeight ? $width / $imageSourceWidth : $height / $imageSourceHeight; // calculate new image size $imageSourceNWidth = $imageSourceWidth * $ratio; $imageSourceNHeight = $imageSourceHeight * $ratio; // calculate ratio for second scaling if ($width > $height) { if ($imageSourceNHeight > $height) { $ratio2 = $height / $imageSourceNHeight; $imageSourceNHeight *= $ratio2; $imageSourceNWidth *= $ratio2; } } else { if ($imageSourceNWidth > $width) { $ratio2 = $width / $imageSourceNWidth; $imageSourceNHeight *= $ratio2; $imageSourceNWidth *= $ratio2; } } // setting position of putting thumbnail on canvas $base_x = floor(($width - $imageSourceNWidth) / 2); $base_y = floor(($height - $imageSourceNHeight) / 2); } else { // when stretching is disabled $imageSourceNWidth = $width; $imageSourceNHeight = $height; $base_x = 0; $base_y = 0; } // copy image imagecopyresampled($imageBG, $imageSource, $base_x, $base_y, 0, 0, $imageSourceNWidth, $imageSourceNHeight, $imageSourceWidth, $imageSourceHeight); // save image depends from MIME type if ($imageData['mime'] == 'image/jpeg' || $imageData['mime'] == 'image/pjpeg' || $imageData['mime'] == 'image/jpg') { imagejpeg($imageBG, $cache_dir . $thumb . $filename, $quality); } elseif ($imageData['mime'] == 'image/gif') { imagegif($imageBG, $cache_dir . $thumb . $filename); } else { imagepng($imageBG, $cache_dir . $thumb . $filename); } return TRUE; } else { return FALSE; } } }
echo $height; ?> px;"> <?php for ($i = 0; $i < count($this->config['image_show_data']); $i++) { ?> <?php if ($this->config['image_show_data'][$i]->published) { ?> <?php // cleaning variables unset($path_big, $title, $link); // creating slide path if ($this->config['generate_thumbnails'] == 1) { $path_big = $uri->root() . 'modules/mod_image_show_gk4/cache/' . GKIS_GameMagazine_Image::translateName($this->config['image_show_data'][$i]->image, $this->config['module_id']); } else { $path_big = $this->config['image_show_data'][$i]->image; } // creating the title if ($this->config['image_show_data'][$i]->type == "k2") { $title = htmlentities(htmlspecialchars($this->articlesK2[$this->config['image_show_data'][$i]->artK2_id]["title"]), ENT_QUOTES, 'UTF-8', false); $link = $this->articlesK2[$this->config['image_show_data'][$i]->artK2_id]["link"]; } else { // creating slide title $title = htmlentities(htmlspecialchars($this->config['image_show_data'][$i]->type == "text" ? $this->config['image_show_data'][$i]->name : $this->articles[$this->config['image_show_data'][$i]->art_id]["title"]), ENT_QUOTES, 'UTF-8', false); $link = $this->config['image_show_data'][$i]->type == "text" ? $this->config['image_show_data'][$i]->url : $this->articles[$this->config['image_show_data'][$i]->art_id]["link"]; } ?> <div class="gkIsSlide" style="z-index: <?php