Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Здравствуйте!

При добавлении объявлении предполагается добавлять 5 фоток.

Происходит это следующим образом:

1. Исходная картинка масштабируется к размеру 400x300px

2. Исходная картинка масштабируется к размеру 80x60px

3. На большую картинку (400x300px) накладывается водяной знак

В итоге получается 10 картинок: 5 больших и 5 - их маленьких аналогов. Все большие картинки имеют водяной знак, маленикие - не имеют его.

Смысл в том, что создаётся галерея товара, сбоку видны маленькие картинки, а тыкнешь на них - подгружается большая картинка для увеличенного просмотра. В общем, всё как и положено. Работает на ура, но... На localhost это занимает 40 секунд! А если пытаетесь сделать это через Интернет - то 1.5-2 минуты... Пользователь может подумать что браузер повис или коннект сдох - и отрубит всё нафиг. Пытался выяснить причину - водяной знак накладывается моментально. Вся проблема - в масштабировании. Именно оно жрёт столько времени.

Хотел было уже аплодить фотки как есть, а уже через crontab каждые минут 5-10 из ресайзить. Но это изврат...

Есть ли выходы?

Делаю так:

// Добавляем данные о тачке в таблицу

INSERT INTO CARS_TABLE VALUES(NULL, ...)...

// Ресайзим картинку 400x300 (flag = 0 - наложить водяной знак)

image_prepare($file, 400, 300, $i, $upload_dir, 0);

// Ресайзим картинку 80x60 (flag = 1 - без водяного знака)

image_prepare('_'.$file, 80, 60, $i, $upload_dir, 1);

Ну а вот и сама ф-я image_prepare():

function image_prepare($file, $w, $h, $i, $upload_dir, $flag) {

$q = 80;

$src = imagecreatefromjpeg($_FILES['photo'.$i]['tmp_name']);

$w_src = imagesx($src);

$h_src = imagesy($src);

$path = $upload_dir.$file;

$w_dest = $w;

$h_dest = $h;

$dest = imagecreatetruecolor($w_dest,$h_dest);

imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);

if(!file_exists($path)) {

// Нужен водяной знак!

if($flag == 0) {

$water_img = ROOT.'/images/design/watermark.png';

$water_hw = getimagesize($water_img);

$water = imagecreatefrompng($water_img);

imagecopy($dest, $water, 400 - $water_hw[0] - 10, 300 - $water_hw[1] - 10, 0, 0, $water_hw[0], $water_hw[1]);

$res = imagejpeg($dest, $path, $q);

}

else $res = imagejpeg($dest, $path, $q);

imagedestroy($dest);

imagedestroy($src);

}

}

Ну закачку картинок на сервер я пропустил - там ничего особенного...

PS: imagecopyresized() не предлагать! Изображения получаются корявые, в зазубринах, а быстродействие почти не улучшается.

Бюджет назначайте сами.

14 лет назад
mikki11
41 годРоссия
14 лет в сервисе
Был
6 месяцев назад
  • Похожие заказы
  • $12

    Необходимо сделать и прикрутить форму заказа карточки (см. вложение) Валидация: ФИО: до 60 символов, required Тип карточки: По умолчанию VIP, required Email: стандартный шаблон reg.exp., required Город: по умолчанию не выбран, required Адрес доставки: до 60 символов, required Мобильный телефон: стандартный шаблон ...

    Закрыт
    14 лет назад
  • $500

    Нужен программист способный доработать скрипт до полноценного движка Скрипт - http://www.goldcoders.com Пример сайта с доработанным - http://gsmonitor.org/ Заказчик предполагает сделать следующие апгрейды: 1. User area Включает в себя регистрацию, логин пользователей. По сути дела повышает технические возможности сайта, ...

    Закрыт
    14 лет назад
  • Задание в приложенном файле. Интересует цена и срок выполнения. Рассмотрю другие варианты решения задачи наполнения инет магазина в автоматическом или полуавтоматическом режиме.

    Завершен
    14 лет назад
  • Добрый день. Сайт http://www.seedoff.net Есть несколько глюков, которые необходимо побороть 1. Блок рекомендуемых торрентов (вверху посередине) необходимо или исправить или заменить: Картинки попадают из базы, отсортированные по дате (картинка с самой последней датой из базы занимает левую позицию). 1) ...

    Закрыт
    14 лет назад
  • Добрый день ! Есть сайт nurtau.chc.kz. На всех страницах расположена карусель. (Прокрутка товаров) - В ФФ работает как надо, но в IE - 6,7,8 наблюдаются следующие глюки: 1 Сначала обязательно нужно нажать кнопку вправо - чтоб ...

    Закрыт
    14 лет назад
  • Сайт на джумле, той версии, где карты сайта не было. Соответственно ее делали самостоятельно. Сейчас на сайте появились новые разделы и несколько пополнилась информация, необходимо обновить в данном направлении. Оплата только в рублях по вэбмани. Давайте ...

    Закрыт
    14 лет назад
  • $10

    Fatal error: Call to a member function getProperty() on a non-object in ... on line 139 PHP + MySQ, MVC парадигма. Вообще, ищу человека для долгосрочного сотрудничества. Предпочтение отдам именно ему. Задачи будут подстраиваться под ваше ...

    Завершен
    14 лет назад