Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Попытка не пытка!

 

Поставщики дают фото, которые чаще всего имеют разрешение 2000 + пх. Весят такие фото по 500 кб. и больше. На сайте используется максимальное разрешение 800х800 и весит такая картинка после ресайза примерно 100 кб. Само собой 10 гб. хостинга уходит как не бывало, за счет originals. Подскажите, как подружить $this->download_image с $this->add_resize_params, дабы заливать в originals уже урезанные фото, скажем до 1000x1000!?

Ссылка на сообщение
Поделиться на другие сайты

Запрограммировать все нужное.

В принципе несложно.

Например, в конце download_image добавить:

1. Создание урезанного 1000х1000 в products.

2. Скопировать его в оriginals вместо исходного.

3. Удалить 1000х1000 из products.

Ссылка на сообщение
Поделиться на другие сайты

Запрограммировать все нужное.

В принципе несложно.

Например, в конце download_image добавить:

1. Создание урезанного 1000х1000 в products.

2. Скопировать его в оriginals вместо исходного.

3. Удалить 1000х1000 из products.

 

Как вариант можно! А если пропускать через gd перед copy($filename, $this->config->root_dir.$this->config->original_images_dir.$new_name), или попробовать imagecopyresized?

Ссылка на сообщение
Поделиться на другие сайты

Если изображений много приходит от поставщиков, то проще по крону, допустим раз в сутки обходить папку originals, и ресайзить изображения до нужного размера. 

Это решение так-же не будет влиять на скорость обработки прайса, ведь если ресайзить прямо во время загрузки прайса, будут тратиться ресурсы сервера на ресайз.

Ссылка на сообщение
Поделиться на другие сайты

В общем мое решение следующее!

 

В таблицу s_images добавляем столбец под названием "resize" а в нем по дефолту = 0. В function resize($filename) перед return $preview_dir.$resized_file; добавляем следующий код:

 

        $this->db->query('SELECT filename, resize FROM __images WHERE filename=? AND resize = 0', $original_file); if($this->db->result()) {
        $resized_orig = $this->add_resize_params($original_file, $width=850, $height=850, $set_watermark=false);
        if(class_exists('Imagick') && $this->config->use_imagick)
            $this->image_constrain_imagick($originals_dir.$original_file, $preview_dir.$resized_orig, $width, $height, $watermark, $watermark_offet_x, $watermark_offet_y, $watermark_transparency, $sharpen);
        else
            $this->image_constrain_gd($originals_dir.$original_file, $preview_dir.$resized_orig, $width, $height, $watermark, $watermark_offet_x, $watermark_offet_y, $watermark_transparency);
        if(rename($preview_dir.$resized_orig, $originals_dir.$original_file))
            $this->db->query("UPDATE __images SET resize = 1 WHERE filename=?", $original_file); }
        return $preview_dir.$resized_orig;
 
Работает следующим образом, когда будет очередной запрос какого-либо ресайза, мы проверим значение resize для оригинала в бд, если в нем 0, значит ресайзим оригинал до нужного размера (в моем случае 850х850), и заменяем этим ресайзом оригинальный файл, + делаем пометку в базе что файл уже оптимизирован. Все! Ничего скачивать, оптимизировать и перезаливать не нужно, сторонние сервисы тоже ненужны. Фото сами себя оптимизируют. В GD ставим качество 95, конечные ресайзы будут 90, визуально разницы никакой, pagespeed выдает 92 балла.
Изменено пользователем kozhushko8
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...