<?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 библиотеку ...
Только я так не делал, и не знаю как
Только я так не делал, и не знаю как
Спустя 2 минуты, 23 секунды (9.11.2010 - 19:35) SlavaFr написал(а):
если здесь не найдеш, то введи в поисковик:
php class image crop
php class image crop
Спустя 1 час, 41 минута, 43 секунды (9.11.2010 - 21:16) MillerLight написал(а):
Вот нашел код умешьшения)))) Помогите соединить пожалуйста!
/*
Функция 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 сделать просто в конце прописать сотки и все?
А если 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... А можно сделать чтоб с центра вырезалась?