/** * Создаёт уменьшенную копию изображения. * @param $SrcFileName Исходный файл. * @param string $DstFileName Имя файла для сохранения уменьшенной копии. * @param int $MaxWidth Максимальная ширина уменьшенной копии. * @param int $MaxHeight Максимальная высота уменьшенной копии. * @param bool $Stretch Растягивать ли картинку если заданные размеры больше исходных. * @param null $SaveFormat Формат сохранения миниатюры (jpeg, png, gif, wbmp). * @return \TPicture */ function CreateThumb($SrcFileName, $DstFileName = '', $MaxWidth = 0, $MaxHeight = 0, $Stretch = false, $SaveFormat = null) { $thumb = new TPicture($SrcFileName); if ($DstFileName == '') { return $thumb; } elseif (is_file($DstFileName)) { unlink($DstFileName); } if ($Stretch || ($MaxWidth > 0 || $MaxHeight > 0) && ($thumb->Width > $MaxWidth || $thumb->Height > $MaxHeight)) { $thumb->SetImageSize($MaxWidth, $MaxHeight); } $thumb->SaveToFile($DstFileName, $SaveFormat); return $thumb; }
function AdminGalleryImageRotate() { global $GalleryDir, $ThumbsDir; $turn = $_GET['turn']; $id = SafeEnv($_GET['id'], 11, int); $angle = 0; if ($turn == 'left') { $angle = 90; } else { $angle = 270; } System::database()->Select('gallery', "`id`='{$id}'"); $img = System::database()->FetchRow(); $file_name = $img['file']; $file = $GalleryDir . $file_name; $thumb = $ThumbsDir . $file_name; // Поворачиваем изображение $pic = new TPicture($file); $pic->Rotate($angle); $pic->SaveToFile($file); // Обновляем эскиз if (is_file($thumb)) { unlink($thumb); } CreateThumb($file, $thumb, System::config('gallery/thumb_max_width'), System::config('gallery/thumb_max_height')); Audit('Фотогалерея: Поворот изображения ' . ($turn == 'left' ? 'влево' : 'вправо') . ' "' . $img['title'] . '" (id: ' . $img['id'] . ')'); $back = new Url(GetRefererUrl($_REQUEST['back'])); $back['update'] = SafeDB($_GET['id'], 11, int); // Добавляем / изменяем параметр update GO($back); }
function AdminUserSaveAvatar() { $alloy_mime = array('image/gif' => '.gif', 'image/jpeg' => '.jpg', 'image/pjpeg' => '.jpg', 'image/png' => '.png', 'image/x-png' => '.png'); include_once System::config('inc_dir') . 'picture.class.php'; $asize = getimagesize($_FILES['avatar']['tmp_name']); $alloy_mime = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png'); $alloy_exts = array('.gif', '.jpg', '.jpeg', '.png'); if (in_array($_FILES['avatar']['type'], $alloy_mime) && in_array(strtolower(GetFileExt($_FILES['avatar']['name'])), $alloy_exts)) { $NewName = $_FILES['avatar']['name']; if ($asize[0] > System::config('user/max_avatar_width') || $asize[1] > System::config('user/max_avatar_height')) { $thumb = new TPicture($_FILES['avatar']['tmp_name']); $thumb->SetImageSize(System::config('user/max_avatar_width'), System::config('user/max_avatar_height')); $thumb->SaveToFile(System::config('general/avatars_dir') . $NewName); } else { copy($_FILES['avatar']['tmp_name'], System::config('general/avatars_dir') . $NewName); } Audit('Пользователи: Добавление аватара в галерею аватар "' . $NewName . '"'); } else { System::admin()->AddCenterBox('Загрузка аватара'); System::admin()->HighlightError('Неправильный формат аватара. Ваш аватар должен быть формата GIF, JPEG или PNG.<br /><a href="javascript:history.go(-1)">Назад в галерею</a>'); } GO(ADMIN_FILE . '?exe=user&a=avatars'); }