$file = $_POST['file'];
// Проверяем загружен ли файл
$fname = $_FILES["file"]["name"];
if(is_uploaded_file($_FILES["file"]["tmp_name"]))
{
// Если файл загружен успешно, перемещаем его
// из временной директории в конечную
if (preg_match('#.*.png#', $fname) or preg_match('#.*.gif#', $fname) or preg_match('#.*.jpg#', $fname) or preg_match('#.*.jpeg#', $fname))
{
$_FILES["file"]["name"] = time().''.$_FILES['file']['name'];
$n = $_FILES["file"]["name"];
move_uploaded_file($_FILES["file"]["tmp_name"], "./avatars/".$_FILES["file"]["name"]);
$result6 = mysql_query("UPDATE `users` SET avatar='avatars/$n' WHERE login='$_SESSION[login]'");
} else { exit("Файл должен быть png,jpg(jpeg),gif."); }
} else {
echo("Ошибка загрузки файла");
}
Не могу понять, как уменьшить аватарку до размера 90х90px средствами php.
Спустя 31 минута, 42 секунды (11.04.2012 - 12:34) SoMeOnE написал(а):
библиотека GD
http://www.php.net/manual/ru/ref.image.php
http://www.php.net/manual/ru/ref.image.php
Спустя 1 час, 4 минуты, 30 секунд (11.04.2012 - 13:38) Ramzil_Nixon написал(а):
<?php
//////////////////////////////////////////////////////////////
// //
// В этой странице пользователь грузить свою аву //
// //
//////////////////////////////////////////////////////////////
if(isset($_SESSION['id']) ? $_SESSION['id'] == $_GET['id'] : '') // Защита
{
$perMessage = ''; // Серверные сообщения
$MesArray = array('NeFormat' => '<span id="ErrorSpan">Не верная расширения</span><br>',
'ErrorAvatar' => '<span id="ErrorSpan">Загрузка не удалась</span><br>',
'CompleteOperation' => '<span id="CompleteSpan">Аватар успешно загружена</span><br>',
'DelComplete' => '<span id="CompleteSpan">Аватар успешно удалена</span><br>',
'Error' => '<span id="ErrorSpan">Ошибка создания миниатюры</span><br>');
$UploadAvaPas = array('.jpg',
'.jpeg',
'.JPEG',
'.JPG'); // массив разрешенных расширений
$QueryAva = mysql_query("SELECT * FROM `users` WHERE
`id_user` = '".(int)$_GET['id']."'
") or die(mysql_error()); // Запрашиваем данные пользователя
$Ava = mysql_fetch_assoc($QueryAva); // Обрабатываем
include_once 'body/data/szen/akkunt/settinguser/LineSetting.php'; // Подключаем линейное меню
if($Ava['originalava'] == true) // Определям размер, и информацию о аватаре
{
$InformPhotos = getimagesize($index.'/'.$UploadImages.$Ava['originalava']); // Ширина, Длина
$SizePhotos = ceil(filesize($UploadImages.$Ava['originalava']) / 1024); // Размер
}
if($Ava['photoava'] == true) // Ава существует
{
$AvaLink = $index.'/'.$UploadAvatar.$Ava['photoava'];
$DelLink = '<hr id="HrSettings"><a href="'.$index.'/'.$UploadImages.$Ava['originalava'].'" class="LineMenuSetting">Скачать ('.$InformPhotos[0].'×'.$InformPhotos[0].', '.$SizePhotos.' кб)</a><br>';
$DelLink .= '<a href="'.$index.$akkunt.$_GET['id'].$Setting.$AvaSet.$AvaDel.'" class="LineMenuSetting">Удалить</a><hr id="HrSettings">';
}
else // Не существует
{
$AvaLink = $index.$StandartAva;
}
if(isset($_POST['GoImages'])) // Начнем действовать, как только пользователь нажал на кнопку
{
if(in_array(strrchr($_FILES['ImagesGos']['name'], '.'), $UploadAvaPas)) // Проверяем формат изображения
{
if(move_uploaded_file($_FILES['ImagesGos']['tmp_name'], $NameOriginalAvatar)) // Начинаем загрузку авы
{
$StatsImages = getimagesize($NameOriginalAvatar); // Получаем данные о изображении
$FileExplodes = explode('/', $NameOriginalAvatar); // Разбиваем текст
if(max($StatsImages[0], $StatsImages[1]) >= $ImgRaz) // Определяем большую сторону
{
$width = $StatsImages[0] >= $StatsImages[1] ? $ImgRaz : floor($ImgRaz * ($StatsImages[0] / $StatsImages[1]));
$height = $StatsImages[0] <= $StatsImages[1] ? $ImgRaz : floor($ImgRaz * ($StatsImages[1] / $StatsImages[0]));
}
else
{
$width = $StatsImages[0];
$height = $StatsImages[1];
}
$images = imagecreatetruecolor($width, $height); // Создаем изображение
$new_images = imagecreatefromjpeg($NameOriginalAvatar); // Создаем JPEG файл
imagecopyresampled($images, $new_images, 0, 0, 0, 0, $width, $height, $StatsImages[0], $StatsImages[1]); // приклеиваем изображение
if(imagejpeg($images, $NameFilesAvatar, 100))
{
$MiniAture = explode('/', $NameFilesAvatar); // Разбиваем ссылку миниятюры
/* Удаляем неиспользуемые аватары для экономия памяти */
if($Ava['photoava'] == true)
{
unlink($UploadAvatar.$Ava['photoava']); // Удаляем миниатюру
unlink($UploadImages.$Ava['originalava']); // Удаляем оригинальную фото
}
$mysql_query_avatar = mysql_query("UPDATE `users` SET
`photoava` = '".mysql_real_escape_string($MiniAture[1])."',
`originalava` = '".mysql_real_escape_string($FileExplodes[1])."' WHERE
`id_user` = '".(int)$_SESSION['id']."'
") or die(mysql_error()); // Обновляем аватары
$perMessage = $MesArray['CompleteOperation']; // Выводим сообщение
}
else
{
$perMessage .= $MesArray['Error']; // Создания миниатюрызавершился с ошибкой.
}
}
else
{
$perMessage .= $MesArray['ErrorAvatar']; // Загрузка не удалась
}
}
else
{
$perMessage .= $MesArray['NeFormat']; // Если неправильная расширения
}
}
if(isset($_GET['del']) && $_GET['del'] == 'ava') // Удаляем аву
{
unlink($UploadAvatar.$Ava['photoava']); // Удаляем миниатюру
unlink($UploadImages.$Ava['originalava']); // Удаляем оригинальную фото
mysql_query("UPDATE `users` SET
`photoava` = '',
`originalava` = '' WHERE
`id_user` = '".(int)$_SESSION['id']."'
") or die(mysql_error()); // Удаляем аву
$perMessage = $MesArray['DelComplete']; // Выведем запись
}
if($perMessage == true) // Если есть серверное сообщение
{
header('Refresh: 1; URL='.$index.$akkunt.$_GET['id'].$Setting.$AvaSet);
}
}
else
{
}
?>
Вот когда-то написанный мной скирпт для wap-сайта.
КОмментировать не стану, думаю и так понятно
Спустя 5 минут, 57 секунд (11.04.2012 - 13:44) Phpprogger написал(а):
Всем спасибо решил обойтись пока одной строкой:
т.к. мне надо, чтобы файл был не большим. Ramzil_Nixon, когда будет время - покопаюсь в коде и установлю твой скрипт. +1 в карму
if($_FILES['file']['size'] > 1024*10)
{
exit("Размер файла превышает 10Kb");
}
т.к. мне надо, чтобы файл был не большим. Ramzil_Nixon, когда будет время - покопаюсь в коде и установлю твой скрипт. +1 в карму
Спустя 19 минут, 48 секунд (11.04.2012 - 14:04) Ramzil_Nixon написал(а):
Цитата (Phpprogger @ 11.04.2012 - 10:44) |
т.к. мне надо, чтобы файл был не большим. |
Можно убрать загрузку оригинала. В таком случае останеться только миниатюра картинки.
Спустя 5 минут, 37 секунд (11.04.2012 - 14:10) NitroGenerate написал(а):
Можно сделать монохромное изображение размером "мама не горюй" и уместиться в ваши 10 кб.
При выводе этого изображения весь ваш дизайн сайта может поползти ...
При выводе этого изображения весь ваш дизайн сайта может поползти ...
Спустя 36 минут, 46 секунд (11.04.2012 - 14:47) Ramzil_Nixon написал(а):
NitroGenerate, вот-вот..
_____________
хе-хе.