public static function createThumbnail($imagePath, $thumbPath, $thumbWidth, $thumbHeight) { if (file_exists($imagePath)) { $imageInfo = getimagesize($imagePath); $canMakeThumb = function_exists('imagejpeg') && ($imageInfo[2] == IMAGETYPE_GIF && function_exists('imagecreatefromgif') || $imageInfo[2] == IMAGETYPE_JPEG && function_exists('imagecreatefromjpeg') || $imageInfo[2] == IMAGETYPE_PNG && function_exists('imagecreatefrompng')); if ($canMakeThumb) { if ($thumbWidth && !$thumbHeight) { $thumbHeight = $thumbWidth / $imageInfo[0] * $imageInfo[1]; } elseif (!$thumbWidth && $thumbHeight) { $thumbWidth = $thumbHeight / $imageInfo[1] * $imageInfo[0]; } $imageThumb = BertaUtils::smart_resize_image($imagePath, $thumbWidth, $thumbHeight, false, 'return', false); if ($imageThumb) { switch ($imageInfo[2]) { case IMAGETYPE_GIF: imagegif($imageThumb, $thumbPath); break; case IMAGETYPE_JPEG: imagejpeg($imageThumb, $thumbPath, 90); break; case IMAGETYPE_PNG: imagepng($imageThumb, $thumbPath); break; default: return false; } if (file_exists($thumbPath)) { chmod($thumbPath, 0666); } return true; } } } return false; }
public static function createThumbnail($imagePath, $thumbPath, $thumbWidth, $thumbHeight) { if (is_file($imagePath)) { $imageInfo = getimagesize($imagePath); $canMakeThumb = function_exists('imagejpeg') && ($imageInfo[2] == IMAGETYPE_GIF && function_exists('imagecreatefromgif') || $imageInfo[2] == IMAGETYPE_JPEG && function_exists('imagecreatefromjpeg') || $imageInfo[2] == IMAGETYPE_PNG && function_exists('imagecreatefrompng')); if ($canMakeThumb) { if ($thumbWidth && !$thumbHeight) { $thumbHeight = $thumbWidth / $imageInfo[0] * $imageInfo[1]; } elseif (!$thumbWidth && $thumbHeight) { $thumbWidth = $thumbHeight / $imageInfo[1] * $imageInfo[0]; } $imageThumb = BertaUtils::smart_resize_image($imagePath, $thumbWidth, $thumbHeight, false, 'return', false); if ($imageThumb) { switch ($imageInfo[2]) { case IMAGETYPE_GIF: //solution for animated gif if (0 && self::$options['HOSTING_PROFILE'] && $imageInfo[2] == IMAGETYPE_GIF) { $file_path = realpath($imagePath); $file_info = pathinfo($file_path); $thumb_info = pathinfo($thumbPath); $thumbPath = $file_info['dirname'] . '/' . $thumb_info['basename']; $command = "/usr/bin/convert {$file_path} -coalesce -bordercolor LightSteelBlue -border 0 -resize {$thumbWidth}x{$thumbHeight} -layers Optimize {$thumbPath}"; exec($command); } elseif (extension_loaded('imagick') && $imageInfo[2] == IMAGETYPE_GIF) { $animation = new Imagick($imagePath); $animation = $animation->coalesceImages(); foreach ($animation as $frame) { $frame->thumbnailImage($thumbWidth, $thumbHeight); $frame->setImagePage($thumbWidth, $thumbHeight, 0, 0); } $animation = $animation->deconstructImages(); $animation->writeImages($thumbPath, true); } else { imagegif($imageThumb, $thumbPath); } break; case IMAGETYPE_JPEG: imagejpeg($imageThumb, $thumbPath, 97); break; case IMAGETYPE_PNG: imagepng($imageThumb, $thumbPath); break; default: return false; } if (file_exists($thumbPath)) { @chmod($thumbPath, 0666); } return true; } } } return false; }