<?php /** * @param string $sSrcname Файл исходного изображения * @param string $sDstName Файл уменьшенной копии * @param int $iDstW Максимальная ширина копии * @param int $iDstH Максимальная высота копии */ function CreateThumbnail($sSrcName, $sDstName, $iDstW, $iDstH) { // Получим информацию о исходном изображении $aImgInfo = <a href="http://www.php.net/getimagesize">getImageSize</a>($sSrcName); // Определим тип switch ($aImgInfo[2]) { case IMAGETYPE_JPEG: $sType = 'jpeg'; break; case IMAGETYPE_PNG: $sType = 'png'; break; case IMAGETYPE_GIF: $sType = 'gif'; break; default: // Если тип нам не нравится, шлем нафиг return false; break; } if (!function_exists('imagecreatefrom' . $sType)) { return false; } // Исходное изображение $imgSrc = call_user_func('imagecreatefrom' . $sType, $sSrcName); // Теперь $iSrcW и $iSrcH ширина и высота исходника list($iSrcW, $iSrcH) = $aImgInfo; // Далее алгоритм определения пропорции if (($iSrcW > $iDstW) || ($iSrcH > $iDstH)) { if ($iSrcW > $iSrcH) { $fK = $iDstW / $iSrcW; } else { $fK = $iDstH / $iSrcH; } } else { $fK = 1; } $iNewW = <a href="http://www.php.net/round">round</a>($iSrcW * $fK); // Ширина копии $iNewH = <a href="http://www.php.net/round">round</a>($iSrcH * $fK); // Высота копии // Создаем уменьшенную копию $imgDst = imagecreatetruecolor($iNewW, $iNewH); ImageCopyResampled($imgDst, $imgSrc, 0, 0, 0, 0, $iNewW, $iNewH, $iSrcW, $iSrcH); // Изменяем размер пропорционально со сглаживанием // Сохраняем в $sDstName call_user_func_array('image' . $sType, <a href="http://www.php.net/array">array</a>($imgDst, $sDstName)); return true; } ?>