X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Пропорциональная обработка изображения
MrLego
MrLego
Topic Starter сообщение 30.10.2010, 13:23; Ответить: MrLego
Сообщение #1


Всем привет. Я ниже выложил скрипт, который обрабатывает изображение, переданное масивом FILES через форму. Скрипт прекрасно работает, но кое что хотелось исправить. Скрипт обрезает изображения до квадратных, он их не уменьшает, а именно обрезает.
А мне нужен скрипт, который будет изменять размер изображения пропорционально по четко заданной ширине. Мне нужны изображения шириной 250px, а высота должна уже автоматом подстраивать под ширину. После чего, новое, измененное изображение заливалось на сервак, а старое (большое удалялось). Ну и название нового изображения падало в переменную $avatar, после чего название можно было легко добавить в базу данных mysql в таблицу с юзером, который залил свое изображение.
Вот код:


[PHP]if (isset($_FILES['fupload']['name'])) //отправлялась ли переменная
{

//иначе - загружаем изображение пользователя для обновления
$path_to_90_directory = 'img/';//папка, куда будет загружаться начальная картинка и ее сжатая копия


if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
{

$filename = $_FILES['fupload']['name'];
$source = $_FILES['fupload']['tmp_name'];
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory

if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
$im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
if(preg_match('/[.](PNG)|(png)$/', $filename)) {
$im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}

if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
$im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}

//СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ ВЗЯТО С САЙТА www.codenet.ru

// Создание квадрата 90x90
// dest - результирующее изображение
// w - ширина изображения
// ratio - коэффициент пропорциональности

$w = 70; // квадратная 90x90. Можно поставить и другой размер.

// создаём исходное изображение на основе
// исходного файла и определяем его размеры
$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения

// создаём пустую квадратную картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат
$dest = imagecreatetruecolor($w,$w);

// вырезаем квадратную серединку по x, если фото горизонтальное
if ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));

// вырезаем квадратную верхушку по y,
// если фото вертикальное (хотя можно тоже серединку)
if ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));

// квадратная картинка масштабируется без вырезок
if ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);


$date=time(); //вычисляем время в настоящий момент.
imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.

$avatar = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.

$delfull = $path_to_90_directory.$filename;
unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
}
}[/PHP]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 30.10.2010, 13:35; Ответить: alexdrob
Сообщение #2


[PHP]

function resizeimg($filename, $smallimage, $w, $h)
{
$filename = $filename;
$smallimage = $smallimage;
$ratio = $w/$h;
$size_img = getimagesize($filename);
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
$src_ratio=$size_img[0]/$size_img[1];

if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
}
else
{
$w = $h*$src_ratio;
}

$dest_img = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);

imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);

if ($size_img[2]==2) imagejpeg($dest_img, $smallimage);
else if ($size_img[2]==1) imagegif($dest_img, $smallimage);
else if ($size_img[2]==3) imagepng($dest_img, $smallimage);

imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}

[/PHP]

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыpocket-exchange.com - обмен электронных валют. Низкие курсы! Быстрая обработка заявок!
8 pocket_exchange 9365 12.8.2022, 15:30
автор: pocket_exchange
Открытая тема (нет новых ответов) Сотрудничество и качественная обработка трафика
4 BNRKmaster 893 12.6.2021, 13:02
автор: NormanSky
Открытая тема (нет новых ответов) Нужна обработка фото в стиле GTA
4 Yoga 1867 4.1.2021, 19:28
автор: essed
Открытая тема (нет новых ответов) Парсинг, наполнение\обработка, верстка и перенос сайтов, программирование на php
Спаршу\обработаю\залью контент для ваших сайтов\магазинов
1 mazdada 1075 26.12.2020, 21:46
автор: Mukis
Открытая тема (нет новых ответов) Вакансия: Обработка заявок в GoGetLinks и Miralinks
5 Monarx 2208 26.5.2020, 16:28
автор: mark2013


 



RSS Текстовая версия Сейчас: 25.4.2024, 5:34
Дизайн