[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Умешение при загрузке
MillerLight
Всем привет! Есть код загрузки фото на сервер. Подскажите как сделать чтоб загружаемое фото автоматически уменьшалось до 400 ширина 300 высота???


<?php $name = 'myfoto'; // имя в форме
$img_path = 'foto/test/'; // путь для загрузки, ну тут берешь из своего движка переменную типа

if ( $_FILES[$name] )
if ( is_uploaded_file($_FILES[$name]['tmp_name']) )
{
$upl_file = $_FILES[$name]; // файл для загрузки

// новое случайное имя

$imgname = "";
for ($k=1;$k<=10;$k++)
if ( rand(0, 5)==3 ) $imgname .= chr(48+rand(0, 9)); else $imgname .= chr(65+rand(0, 25));
$imgname = strtolower($imgname);
$imgname .= ".jpg";

// проверка типа файла на JPEG
if ($upl_file['type'] != "image/jpeg" && $upl_file['type'] != "image/pjpeg") {
die('error type file');
}

$full_path = $img_path . $imgname; // полный путь
if ( file_exists($full_path) ) unlink ($full_path); // если файл существует - удаляем

if ( move_uploaded_file($upl_file['tmp_name'], $full_path) ) // перемещение
{
// определяем размеры изображения
$info_size = getimagesize($full_path);
$width = $info_size[0]; // ширина
$height = $info_size[1]; // высота
}

}
?>




Спустя 31 минута, 2 секунды (9.11.2010 - 19:32) DmitryOpalev написал(а):
Наверное через GD библиотеку biggrin.gif ...
Только я так не делал, и не знаю как rolleyes.gif

Спустя 2 минуты, 23 секунды (9.11.2010 - 19:35) SlavaFr написал(а):
если здесь не найдеш, то введи в поисковик:
php class image crop

Спустя 1 час, 41 минута, 43 секунды (9.11.2010 - 21:16) MillerLight написал(а):
Вот нашел код умешьшения)))) Помогите соединить пожалуйста! rolleyes.gif


/*
Функция img_resize(): генерация thumbnails
Параметры:
$src - имя исходного файла
$dest - имя генерируемого файла
$width, $height - ширина и высота генерируемого изображения, в пикселях
Необязательные параметры:
$rgb - цвет фона, по умолчанию - белый
$quality - качество генерируемого JPEG, по умолчанию - максимальное (100)
*/

function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100)
{
if (!file_exists($src)) return false;

$size = getimagesize($src);

if ($size === false) return false;

// Определяем исходный формат по MIME-информации, предоставленной
// функцией getimagesize, и выбираем соответствующую формату
// imagecreatefrom-функцию.

$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;

$x_ratio = $width / $size[0];
$y_ratio = $height / $size[1];

$ratio = min($x_ratio, $y_ratio);
$use_x_ratio = ($x_ratio == $ratio);

$new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);
$new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
$new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2);
$new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

// Читаем в память файл изображения с помощью функции imagecreatefrom...
$isrc = $icfunc($src);
// Создаем новое изображение
$idest = imagecreatetruecolor($width, $height);

// Заливка цветом фона
imagefill($idest, 0, 0, $rgb);
// Копируем существующее изображение в новое с изменением размера:
imagecopyresampled(
$idest, // Идентификатор нового изображения
$isrc, // Идентификатор исходного изображения
$new_left, $new_top, // Координаты (x,y) верхнего левого угла в новом изображении
0, 0, // Координаты (x,y) верхнего левого угла копируемого блока
// существующего изображения

$new_width, // Новая ширина копируемого блока
$new_height, // Новая высота копируемого блока
$size[0], // Ширина исходного копируемого блока
$size[1] // Высота исходного копируемого блока
);
// Сохраняем результат в JPEG-файле: функция imagejpeg, может выводить
// результат своей работы не только в броузер, но и в файл. Для этого
// следует указать имя файла в необязательном втором параметре.
// Функция imagejpeg имеет и третий необязательный параметр - качество
// изображения.

imagejpeg($idest, $dest, $quality);

imagedestroy($isrc);
imagedestroy($idest);

return true;
}
?>

Спустя 48 минут, 52 секунды (9.11.2010 - 22:05) Sanchopansa написал(а):
Вот... Возможно есть какието несходства.. но в общем так.. думаю разберешся
<?php 
function
img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100)
{
if (!file_exists($src)) return false;

$size = getimagesize($src);

if ($size === false) return false;

// Определяем исходный формат по MIME-информации, предоставленной
// функцией getimagesize, и выбираем соответствующую формату
// imagecreatefrom-функцию.

$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;

$x_ratio = $width / $size[0];
$y_ratio = $height / $size[1];

$ratio = min($x_ratio, $y_ratio);
$use_x_ratio = ($x_ratio == $ratio);

$new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);
$new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
$new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2);
$new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

// Читаем в память файл изображения с помощью функции imagecreatefrom...
$isrc = $icfunc($src);
// Создаем новое изображение
$idest = imagecreatetruecolor($width, $height);

// Заливка цветом фона
imagefill($idest, 0, 0, $rgb);
// Копируем существующее изображение в новое с изменением размера:
imagecopyresampled(
$idest, // Идентификатор нового изображения
$isrc, // Идентификатор исходного изображения
$new_left, $new_top, // Координаты (x,y) верхнего левого угла в новом изображении
0, 0, // Координаты (x,y) верхнего левого угла копируемого блока
// существующего изображения

$new_width, // Новая ширина копируемого блока
$new_height, // Новая высота копируемого блока
$size[0], // Ширина исходного копируемого блока
$size[1] // Высота исходного копируемого блока
);
// Сохраняем результат в JPEG-файле: функция imagejpeg, может выводить
// результат своей работы не только в броузер, но и в файл. Для этого
// следует указать имя файла в необязательном втором параметре.
// Функция imagejpeg имеет и третий необязательный параметр - качество
// изображения.

imagejpeg($idest, $dest, $quality);

imagedestroy($isrc);
imagedestroy($idest);

return true;
}

$name = 'myfoto'; // имя в форме
$img_path = 'foto/test/'; // путь для загрузки, ну тут берешь из своего движка переменную типа

if ( $_FILES[$name] )
{
if ( is_uploaded_file($_FILES[$name]['tmp_name']) )
{
$upl_file = $_FILES[$name]; // файл для загрузки
$pathinfo = pathinfo($_FILES[$name]['name']);
// новое случайное имя
$imgname = time() . $pathinfo['filename'] . '.jpg';

// проверка типа файла на JPEG
if ($upl_file['type'] != "image/jpeg" && $upl_file['type'] != "image/pjpeg")
{
die('error type file');
}

$full_path = $img_path . $imgname; // полный путь
if ( file_exists($full_path) ) unlink ($full_path); // если файл существует - удаляем

if ( !img_resize($_FILES[$name]['tmp_name'], $full_path, 400, 300) ) // перемещение
{
die('Ошибка создания миниатюры!');
}
}
}

?>

Спустя 22 минуты, 51 секунда (9.11.2010 - 22:28) MillerLight написал(а):
Спасибо, Sanchopansa!

А если 100 на 100 сделать просто в конце прописать сотки и все?

Спустя 27 минут, 3 секунды (9.11.2010 - 22:55) Sanchopansa написал(а):
Да вот тут можешь поменять размеры

if ( !img_resize($_FILES[$name]['tmp_name'], $full_path, 400, 300) )

Спустя 7 часов, 51 минута, 2 секунды (10.11.2010 - 06:46) MillerLight написал(а):
Не совсем так))) При 100 на 100 фотка становится как бы по ширине 100 а по высоте становится примерно 80... А можно сделать чтоб с центра вырезалась?
Быстрый ответ:

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