Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как уменьшить размер изображения при загрузки?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: помогите пожалуйста, как уменьшить размер изображения при загрузки, заранее спасибо!
Tormoz
Отправлено: 04 Ноября, 2009 - 16:41:15
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




помогите пожалуйста, как уменьшить размер изображения при загрузки, заранее спасибо!
 
 Top
Roler
Отправлено: 04 Ноября, 2009 - 16:51:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




А поиском вы не пользуетесь принципиально?
 
 Top
Ch_chov
Отправлено: 04 Ноября, 2009 - 16:54:05
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




 
 Top
Tormoz
Отправлено: 04 Ноября, 2009 - 16:54:51
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




я тему еле нашел где создать блин
куда мне до поиска
 
 Top
EuGen Администратор
Отправлено: 04 Ноября, 2009 - 17:14:15
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Это не есть предмет гордости. Полюбопытствуйте в следующий раз, Вам же потом легче будет.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Tormoz
Отправлено: 04 Ноября, 2009 - 17:18:01
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




хорошо! спасибо за ссылку!
 
 Top
JustUserR
Отправлено: 05 Ноября, 2009 - 09:44:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Tormoz Вы имеете в виду сжатие изображение в размерах с ухудшением качества или же типа Gzip-сжатие - это совершенно разные вещи
Могу дать готовую функцию которая уменьшает изображение


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Tormoz
Отправлено: 05 Ноября, 2009 - 12:20:06
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Я короче пишу блог, мне нужно что бы когда человек загружает фото, оно весело мерьше, так как если она будет весить 2-3 мб страницы грузится будут по пол дня!

(Отредактировано автором: 05 Ноября, 2009 - 12:21:18)

 
 Top
valenok Модератор
Отправлено: 05 Ноября, 2009 - 12:36:41
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А вы весело уменьшайте картинку и конвертируйте в jpg
Еще можете загружать все это на сторонний хостинг изображений. Они обычно оперативней реагируют на запросы.


-----
Truly yours, Sasha.
 
My status
 Top
Tormoz
Отправлено: 05 Ноября, 2009 - 13:55:55
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Может кто может готовый код дать, вот мой код загрузни изображения:
<?

if (!isset($_FILES['att']))
{

echo <<<HERE
<p><form enctype='multipart/form-data' method=post>
<input type="file" size="50" name="att" class=input><br>
<input class=button type=submit value='Загрузить'>
</form></p>
HERE;
}
else
{


$filename = $_FILES['att']['name'];
$ex = explode(".",$filename);

if (substr($_FILES['att']['type'],0,5) == 'image')
{


if (copy($_FILES['att']['tmp_name'],
"files/".$_SESSION['user'].".".$ex[1]))
{
// Уничтожаем файл во временном каталоге
unlink($_FILES['att']['tmp_name']);
// Изменяем права доступа к файлу
chmod("files/".$_SESSION['user'].".".$ex[1], 0644);
}

$ava = $_SESSION['user'].".".$ex[1];

$result=mysql_query("UPDATE userlist SET ava='$ava' WHERE id='".$_SESSION['id_user']."'");


if ($result)
{
echo "<p>Фото загружено!!!";
}

}
else { echo "<p>Данный формат не является графическим!!!<br><a href='update.php'>Повторить</a>"; exit(); }
}
}
?>

если кто может переделайте, заранее спасибо!!

(Отредактировано автором: 05 Ноября, 2009 - 13:56:42)

 
 Top
JustUserR
Отправлено: 05 Ноября, 2009 - 16:28:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Tormoz Понимаете есть вещи которые нельзя сделать с помощью некотрых заданных средств в принципе
Вам надо смижать фотографию на стороне клиента причем делать это браузером то есть JS - в чистом виде это невозможно - максимум что можно придумать это прицепить ActiveX-элемент который будет сжимать изображение
Единсвенно чем можно вас порадовать что в роли такого элемента подойдет flash-ка и вроде бы там можно реализовать такое


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Tormoz
Отправлено: 05 Ноября, 2009 - 16:58:15
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Ура! получилось!
вот код:

<?

if (!isset($_FILES['att']))
{
echo "<p>Максимальный размер файла не должен привышать 500 кб!</p>";
echo <<<HERE
<p><form enctype='multipart/form-data' method=post>
<input type="file" size="50" name="att" class=input><br>
<input class=button type=submit value='Загрузить'>
</form></p>
HERE;
}
else
{


$src = $_FILES['att']['name'];
$ex = explode(".",$src);





if (substr($_FILES['att']['type'],0,5) == 'image')
{



if (copy($_FILES['att']['tmp_name'],
"files/".$_SESSION['user'].".".$ex[1]))
{
// Уничтожаем файл во временном каталоге
unlink($_FILES['att']['tmp_name']);
// Изменяем права доступа к файлу
chmod("files/".$_SESSION['user'].".".$ex[1], 0644);
}

$ava = $_SESSION['user'].".".$ex[1];

$result=mysql_query("UPDATE userlist SET ava='$ava' WHERE id='".$_SESSION['id_user']."'");


if ($result)
{
echo "<p>Фото загружено!!!";



$dest = $_SESSION['user'].".".$ex[1];




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);

$isrc = $icfunc($src);
$idest = imagecreatetruecolor($width, $height);

imagefill($idest, 0, 0, $rgb);
imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
$new_width, $new_height, $size[0], $size[1]);

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

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

return true;

}




if (img_resize('files/'.$_SESSION['user'].'.'.$ex[1].'', 'files/'.$_SESSION['user'].'.'.$ex[1].'', 500, 600))
echo 'Image resized OK';
else
echo 'Resize failed!';













}

}
else { echo "<p>Данный формат не является графическим!!!<br><a href='update.php'>Повторить</a>"; exit(); }
}


?>
кто может сделать что бы сжималось пропорцианально?
вот кад пропорциональности:

list($width, $height, $type, $attr) = getimagesize($img);
if($width > $height) $dif = $width / 100; $width = 100; $height = $height / $dif;
else $dif = $height / 100; $height = 100; $width = $width / $dif;
echo "< img src='".$img."' width = '".$width."' height='".$height."' />";

ток я незнаю как его применить! помогите пожалуйста...
 
 Top
JustUserR
Отправлено: 06 Ноября, 2009 - 09:06:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Tormoz Эээ ну картинка все равно сжимается на сервере и закачивать ее будет также долго - вы это учли?


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Mike-Eci
Отправлено: 07 Ноября, 2009 - 08:31:33
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Янв. 2009  
Откуда: Пенза


Помог: 0 раз(а)




всем здрасте, многоуважаемые проггеры. я не стал новую тему создавать, хоть эта и не совсем подходит. я что то не соображу как сделать следующее:

человек заполняет форму и у него должна быть возможность добавить несколько картинок, допустим три. я знаю что в форме можно сделать три поля типа "прикрепляемый файл" но если вдруг несведущий человек добавляет 3 фотки размером по 2.5 метра, то скрипту нужно выделять больше памяти.

можно ли сделать так что бы человек ткнув на надпись "добавить картинку" попадал на страничку где уже нужно было ткнуть на кнопку обзор поля
CODE (text):
скопировать код в буфер обмена
  1. <input class="input" type="file" size="30" name="FILE_UPLOAD">
- дальше скрипт загружает, уменьшает, сохраняет файл а в страничку с главной формой возвращает какой нибудь ее идентификатор?

извиняюсь сразу за так коряво поставленный вопрос. возможно есть какие то еще способы я просто не представляю еще.
вот как примерно здесь: http://www[dot]terdo[dot]ru/post/ . я понимаю что это сделано частично на яве.

(Отредактировано автором: 07 Ноября, 2009 - 08:32:53)



-----
 
 Top
sawkow
Отправлено: 08 Ноября, 2009 - 22:18:03
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




всем привет. Код, представленный выше работает с фотографиями до определённого размера. С некоторого размера (из современных фотокамер) РНР давиться. Т.е. скрипт перестаёт работать.
Пожалуйста подскажите, какими средствами можно решить задачу?
Идеально будет если посетитель сайта выберет любую jpeg фотку с своего компьютера и нажмёт "отправить". Не напрягать пользователя размером, разрешением и т.д.
Может можно какую-то внешнюю програмку приспособить, или ресурс какой? Излазился по инету в поисках. Всё что есть это использование DB.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB