Сжатие изображений для сайта: способы и методы
- Содержание:
- 1. Сжатие изображений на VPS (на виртуальном сервере).
- 2. Сжатие изображений на обычном хостинге.
- 3. 1. Получение всех изображений, находящихся в инфоблоках, папка /upload/iblock/.
- 4. 2. Скачивание всех изображений находящихся на хостинге на компьютер.
- 5. 3) Сжать все изображения специальной программной или софтом.
- 6. 4) Загрузить все изображения обратно на хостинг при помощи любого FTP клиента.
Сжать и оптимизировать изображения для сайта можно разными способами и метода. Но здесь речь пойдет о том, что именно помогло мне.
Задача состояла в том, что на сайте Битрикс нужно было пересжать папку /upload/iblock/.
В ней файлы весили много мегабайт, поэтому поискав информацию нашел решение.
Сжатие изображений на VPS (на виртуальном сервере).
Есть 2 утилиты для сжатия изображений, и если у Вас VPS, то сделать это достаточно просто.
Необходимо установить jpegoptim и optipng.
Команды для установки их в Linux:
sudo apt-get install optipng
sudo apt-get install jpegoptim
Затем необходимо перейти в папку изображений в рекурсивно сжать через консоль все изображения.
Рекурсивное сжатие .jpgfind -type f -name "*.jpg" -exec jpegoptim --strip-all --max=70 {} \;Рекурсивное сжатие .png
find -type f -name "*.png" -exec optipng -o4 {} \;
Здесь max=70 характеризует степень сжатия, сейчас стоит среднее значение. Также степень сжатия зависит и от -о4, но здесь лучше не ставить высокое значение, а то долго придется сжать. В данном случае стоит 4 прохода, среднее значение.
Сжатие изображений на обычном хостинге.
Чтобы сжать изображения на обычном хостинге, нужно:
Выбран данный вариант был так как картинок очень много и весят они в среднем по 5 мегабайт. Всякие модули для Битрикс имеют ограничения, а нормальные модули стоят денег. Поэтому оптимальным оказалось использовать такой вариант. Еще и дисковое пространство на хостинге начало переполняться лишними мегабайтами.
Есть несколько способов сделать скачивание. Но так как на хостинге мало места, то архивирование этой папки значительно превысит дисковое пространство.
Решение: провести скачивание при помощи списка файлов и сделать это при помощи команды в консоле.
1. Получение всех изображений, находящихся в инфоблоках, папка /upload/iblock/.
Создаем в корне сайта скрипт для получения изображений, назовем его test.php
Для Битрикс получение всех картинок в папке /upload/iblock/ выглядит так:
<code class="language-php"> $dir = "./upload/iblock/"; function getDirContents($dir, &$results = array()){ $files = scandir($dir); foreach($files as $key => $value){ $path = realpath($dir.DIRECTORY_SEPARATOR.$value); if(!is_dir($path)) { //заменяем путь до директории на адрес сайта, //чтобы потом скачать свои картинки $path = str_replace("/home/путь до директории сайта/public_html", "https://адрес сайта.ru", $path); $results[] = $path; //пишем в лог пути к картинкам file_put_contents($_SERVER['DOCUMENT_ROOT'].'/file.txt', $path."\n", FILE_APPEND); } else if($value != "." && $value != "..") { getDirContents($path, $results); //$results[] = $path; } } return $results; } </code>Где /home/путь до директории сайта/public_html - это дирректория на сервере, где лежит файл, а https://адрес сайта.ru - сам домен сайта, с которого будут скачиваться картинки.
В результате получится файл такого содержания:
2. Скачивание всех изображений находящихся на хостинге на компьютер.
Для решения задачи скачивания множества файлов на помощь пришел Git Bash. Он позволяет в среде Windows выполнить команду скачивания и сжатия файлов (которые описаны выше, в пункте сжатия изображений для VPS).
В консоли Git Bash переходим в нужную папку, при помощи команды:
cd /images/.
Вбиваем команду для скачивания множества файлов из текстового файла file.txt.
Команда для скачивания файлов с сервера:
wget -r --no-parent -i file.txt
При этом убедитесь, что файл file.txt лежит в директории /images/.
Таким способом можно перекачивать файлы с боевого сайта на тестовый сайт, да и вообще скачивать по путям любые картинки.
3) Сжать все изображения специальной программной или софтом.
Для этого в среде Windows можно скачать все те же программы, что и описаны выше jpegoptim (https://sourceforge.net/projects/jpegoptim/) и optipng (https://sourceforge.net/projects/optipng/) и закинуть файлы программы в папку С://Windows - это папка, где находятся сама система (системные файлы).
В линукс программы устанавливается проще для дебиан:
apt-get install jpegoptim apt-get install optipng
Дальше нужно просто выполнить перейти в папку cd /images/ выполнив это в консоли.
Затем уже выполнить те же команды для рекурсивного обхода по файлам для сжатия изображений:
Рекурсивное сжатие .jpgfind -type f -name "*.jpg" -exec jpegoptim --strip-all --max=70 {} \;Рекурсивное сжатие .png
find -type f -name "*.png" -exec optipng -o4 {} \;
4) Загрузить все изображения обратно на хостинг при помощи любого FTP клиента.
Сам использую клиент WinSCP.
Нужно просто выделить все файлы и заменить их. Опять же если есть место на хостинге таких операций не потребуется. На картинке показано как выделить файла (CTRL + A) и мышкой сделать перенос файлов. Важно чтобы перетаскивание не было в какую либо папку.
Комментарии находятся на модерации или не добавлены.
Для добавления комментариев необходимо зарегистрироваться и авторизоваться
Также возможно авторизоваться через Социальную сеть Вконтакте (VK)