[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Пропорциональное уменьшение картинок
sodroot
Приветствую всех пользователей php форума.
Нужно было в сайте реализовать при загрузке картинок на сайт пропорциональное уменьшение по ширине, не больше 800 пикселей, максимальное число картинок 7.
Нагуглил этот пример:
<?php
//Определяем размер фотографии — ширину и высоту
$size=GetImageSize ("photo.jpg");
//Создаём новое изображение из «старого»
$src=ImageCreateFromJPEG ("photo.jpg");
//Берём числовое значение ширины фотографии, которое мы получили в первой строке и записываем это число в переменную
$iw=$size[0];
//Проделываем ту же операцию, что и в предыдущей строке, но только уже с высотой.
$ih=$size[1];
//Ширину фотографии делим на 150 т.к. на выходе мы хотим получить фото шириной в 150 пикселей. В результате получаем коэфициент соотношения ширины оригинала с будущей превьюшкой.
$koe=$iw/150;
//Делим высоту изображения на коэфициент, полученный в предыдущей строке, и округляем число до целого в большую сторону — в результате получаем высоту нового изображения.
$new_h=ceil ($ih/$koe);
//Создаём пустой изображени шириной в 150 пикселей и высотой, которую мы вычислили в предыдущей строке.
$dst=ImageCreateTrueColor (150, $new_h);
//Данная функция копирует прямоугольную часть изображения в другое изображение, плавно интерполируя пикселные значения таким образом, что, в частности, уменьшение размера изображения сохранит его чёткость и яркость.
ImageCopyResampled ($dst, $src, 0, 0, 0, 0, 150, $new_h, $iw, $ih);
//Сохраняем полученное изображение в формате JPG
ImageJPEG ($dst, "small_photo.jpg", 100);
imagedestroy($src);
?>
А теперь к сути вопроса:
Я запихнул этот код в цикл и немного доработал чтобы он все форматы уменьшал.
Проблема в том что когда картинки маленькие примерно 100КБ загрузка 7 картинок занимает 4-5 сек, а когда картинки большие размер примерно 1МБ это занимет уже 10-15 сек это уже перебор...
Люди опытные подскажите может как-то можно по другому сделать чтобы столько времени не занимало?



Спустя 2 часа, 42 минуты, 38 секунд (20.08.2012 - 15:27) sergeiss написал(а):
А эти 7 картинок с шириной примерно 1000 пикселей - они какого объема? Из твоих слов не понятно. Пока ты дал данные для сравнения килограммов с километрами smile.gif
Если время обработки увеличивается пропорционально объёму картинки, то это нормально.

Спустя 1 час, 11 минут, 11 секунд (20.08.2012 - 16:38) sodroot написал(а):
(1000 пикс = 100-150КБ)
Проблема в том что у меня автодоска, пользователи часто ложат объявления с фотками по 3МБ, если 7 таких фоток то страница будет грузиться целую минуту! А это вообще ни в какие рамки не лезет(((

Спустя 49 минут, 33 секунды (20.08.2012 - 17:28) sergeiss написал(а):
Поставь ограничения в форме, чтобы не отправлялись большие файлы и укажи ограничения на объем, чтобы юзеры их видели. Для честных людей эти ограничения сработают smile.gif Если же кто-то захочет их обойти сознательно, то ты ничего не поделаешь с этим.

Но этот вопрос касается не PHP, а только HTML.

Спустя 2 часа, 58 минут, 5 секунд (20.08.2012 - 20:26) sodroot написал(а):
sergeiss, Полный бред! Вы вопрос читали вообще?
Здесь на форуме есть опытные люди???
Помогите, как можно сократить время загрузки и обработки картинок???

Спустя 41 минута, 47 секунд (20.08.2012 - 21:08) Invis1ble написал(а):
sodroot
Зачем грубишь человеку? Он тебе правильно все говорит, и уж всяко поопытней тебя он.

Как вариант - делать ресайз картинок на стороне клиента.

Спустя 11 минут, 1 секунда (20.08.2012 - 21:19) sergeiss написал(а):
Цитата (sodroot @ 20.08.2012 - 22:26)
sergeiss, Полный бред! Вы вопрос читали вообще?

Генацвале... Если ты такой умный, то зачем на форуме вопросы задаешь, да? А если не знаешь, как сделать такое ограничение, как я сказал, то ты спроси или погугли. Вместо того, чтобы хамить smile.gif ОК?

Спустя 32 минуты, 56 секунд (20.08.2012 - 21:51) sodroot написал(а):
Вариант с хтмл вообще не вариант...

Я же спрашиваю как можно сократить время загрузки!
Может можно как-то сделать чтобы они все параллельно загружались???

Вы что все такие опытные делаете всегда ограничение в хтмл?
Что у вас не было заказчиков которые чётко пишут уменьшение картинок при загрузке???

Спустя 4 минуты, 35 секунд (20.08.2012 - 21:56) sodroot написал(а):
Цитата (Invis1ble @ 20.08.2012 - 19:08)
sodroot
Зачем грубишь человеку? Он тебе правильно все говорит, и уж всяко поопытней тебя он.

Как вариант - делать ресайз картинок на стороне клиента.

Вы наверно издеваетесь?)
Люди которые выкладывают объявление о продаже своего автомобиля большинство не умеют уменьшать изображения, а возможно вообще толком не знают что такое компьютер...

Спустя 2 минуты, 1 секунда (20.08.2012 - 21:58) Invis1ble написал(а):
Цитата
Я же спрашиваю как можно сократить время загрузки!

время = размер / скорость
уменьшить время:
1. уменьшить размер
2. увеличить скорость
математика, 5-6 класс

Цитата
Вы наверно издеваетесь?)

ты знаешь что значит понятие "клиент" в IT ? Подсказка-1: это не тот, который покупает в магазине или на рынке. Подсказка-2: есть клиентское и есть серверное программирование.

Спустя 18 минут, 36 секунд (20.08.2012 - 22:17) sergeiss написал(а):
Цитата (sodroot @ 20.08.2012 - 23:51)
Что у вас не было заказчиков которые чётко пишут уменьшение картинок при загрузке???

Давай отделим "мух от котлет".
1. Твой скрипт по-минимуму, без лишних действий делает уменьшение. Улучшать тут просто нечего smile.gif То есть, ты делаешь "уменьшение при загрузке", как того и хочет заказчик.
2. При загрузке больших картинок требуется много времени на: (а) загрузку и (б) обработку. В итоге уходит много времени на всё это безобразие.
3. Заказчик должен понимать, что от тебя не зависят ни скорость закачки данных от юзеров, ни скорость обработки на сервере. Поэтому ты или делаешь ограничение на закачку в HTML, и юзер САМ думает, как ему сделать предварительно уменьшенную копию и вовсе не обязательно до маленького размера. Например, ты ограничиваешь размер картинки в 1МБ. Либо - делаешь всё на стороне сервера и юзер ждет, когда это всё будет сделано. Ты можешь только сделать ему красивую картинку, которая будет показывать процесс загрузки в каком-нибудь удобном виде. И ежели он не умеет или не хочет ресайзить сам, то пусть ждет 20-30-60 секунд, пока все загрузится.
Для выполнения ч.2 из п.3 можно использовать AJAX и iframe. При их совместной работе можно изобразить просто "конфетку" smile.gif

Спустя 1 час, 40 минут, 12 секунд (20.08.2012 - 23:57) sodroot написал(а):
sergeiss, Ок. Спасибо. Согласен наверно лучше всего будет сделать анимацию загрузки страницы по середине экрана чтобы пользователь видел)

P.S. Извините за грубость. Нужно было хорошее разъяснение как у вас в последнем сообщение. Спасибо и в карму +1 соответственно)

Спустя 9 часов, 33 минуты, 15 секунд (21.08.2012 - 09:30) killer8080 написал(а):
Цитата (sodroot @ 20.08.2012 - 22:56)
Цитата (Invis1ble @ 20.08.2012 - 19:08)
sodroot
Зачем грубишь человеку? Он тебе правильно все говорит, и уж всяко поопытней тебя он.

Как вариант - делать ресайз картинок на стороне клиента.

Вы наверно издеваетесь?)
Люди которые выкладывают объявление о продаже своего автомобиля большинство не умеют уменьшать изображения, а возможно вообще толком не знают что такое компьютер...

Про флеш слыхал? wink.gif

Спустя 8 минут, 18 секунд (21.08.2012 - 09:38) ИНСИ написал(а):
Цитата
примерно 100КБ загрузка 7 картинок занимает 4-5 сек, а когда картинки большие размер примерно 1МБ это занимет уже 10-15

Тогда не стоит позволять пользователям загружать по 7 картинок сразу. Я так понял ты массовую загрузку реализовал.

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

Загрузка будет быстрой, без обновления страницы и т.д.

Спустя 59 минут, 20 секунд (21.08.2012 - 10:38) sodroot написал(а):
ИНСИ
Спасибо. Тоже не плохой вариант.
Надо будет как-то ajax освоить, так как с ним пока не сталкивался.
Если можно дайте ссылку где толково объясняют технологию ajax с примерами. smile.gif

Спустя 54 минуты, 59 секунд (21.08.2012 - 11:33) sergeiss написал(а):
Цитата (sodroot @ 21.08.2012 - 12:38)
Если можно дайте ссылку где толково объясняют технологию ajax с примерами.

Спустя 17 минут, 53 секунды (21.08.2012 - 11:51) sodroot написал(а):
sergeiss
Спасибо. smile.gif
Быстрый ответ:

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