[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Необходимо изменить размер картинки (на php)
Phpprogger
Есть скрипт загрузки аватарок на сервер:
$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 написал(а):

Спустя 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].'&times;'.$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 написал(а):
Всем спасибо решил обойтись пока одной строкой:
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, вот-вот..


_____________
хе-хе.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.