xavior Опубликовано 8 августа, 2015 Жалоба Поделиться Опубликовано 8 августа, 2015 Сегодня мы будем оптимизировать изображения из папки /products/, не originals!! т.к. они идут уже отрендеренные под определенные размеры и будем это делать с помощью Tinypng.com сервиса. Данная манипуляция позволила в Google Speed Page мне набрать +17 баллов и приблизив меня к отметке 89/100 (изначально было 57/100) Мы будем использовать баш скрипт и ставить его на выполнение 1 раз в неделю по крону. Предусловия: 1. у меня пользователь назывется user1 2. файлы в папке products создаются под пользователем apache 3. нужно установить JQ - apt-get install jq или yum install jq Код tiny.sh скрипта c комментариями: #!/bin/bash # Получаем API ключ на сайте https://tinypng.com/developers. # Бесплатно имеем 500 запросов в месяц. Пока тестируем можем брать # сколько угодно ключей на разные почтовые ящики. API_KEY="CHANGE_ME" if [ $API_KEY = "CHANGE_ME" ] then echo "CHANGE THE API_KEY in this file." exit 1 fi if ! type "jq" > /dev/null then echo "Please install `jq`" exit 1 fi # Указываем полный серверный путь до папки products # И делаем поиск всех изображений с владельцем apache find /var/www/user1/data/www/site.com/files/products -group apache -type f \( -name \*.jpg -o -name \*.png -o -name \*.jpeg \) -print0 | while IFS= read -r -d '' file; do json=$(curl -sS --user api:$API_KEY --data-binary @$file https://api.tinypng.com/shrink) url=$(jq -n "$json.output.url" | sed -e 's/^"//' -e 's/"$//') curl -sS $url > $file # Устанавливаем на файл права пользователя user1 chown user1:user1 $file done # Ищем и удаляем файлы которые меньше 1кб (значит не сконвертировались) # соответственно они сами пересоздадутся с пользователем apache find /var/www/user1/data/www/site.com/files/products -group user1 -type f -size -1k -delete Что делает скрипт: 0. Беслатный лимит обработки 500 изображений 1. Обрабатывает всех изображения с пользователем apache 2. Оптимизирует и сохраняет с пользователем user1 3. При следующих обращениях не трогает уже оптимизированные файлы! Для моих нужд слихвой подходит Для теста запускаем sh tiny.sh ну и потом ставим в крон Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 8 августа, 2015 Жалоба Поделиться Опубликовано 8 августа, 2015 вы бы еще пост свой от html тегов оптимизировали. а то читать ужасно Цитата Ссылка на сообщение Поделиться на другие сайты
xavior Опубликовано 8 августа, 2015 Автор Жалоба Поделиться Опубликовано 8 августа, 2015 вы бы еще пост свой от html тегов оптимизировали. а то читать ужасноМишаня, я писал пост вручную здесь, ни откуда не копировал Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 8 августа, 2015 Жалоба Поделиться Опубликовано 8 августа, 2015 Мишаня, я писал пост вручную здесь, ни откуда не копировал так я ж не говорю что копировали, посмотрите просто форум не читает html теги. и выглядит не очень Цитата Ссылка на сообщение Поделиться на другие сайты
xavior Опубликовано 8 августа, 2015 Автор Жалоба Поделиться Опубликовано 8 августа, 2015 (изменено) так я ж не говорю что копировали, посмотрите просто форум не читает html теги. и выглядит не оченьтут дело в другом, проблема на форуме Переписал. Изменено 8 августа, 2015 пользователем xavior Цитата Ссылка на сообщение Поделиться на другие сайты
Gloobus Опубликовано 23 августа, 2015 Жалоба Поделиться Опубликовано 23 августа, 2015 Спасибо большое за идею!Очень классный сервис. Единственное, у меня изображения не под пользователем apache формируются, а под тем пользователем, под которым он запущен.В принципе это не беда, тут главное идея! Кстати, я попробовал, если несколько раз пропускать изображение через shrink, оно становится все меньше и меньше Нашел удобный и просто класс https://github.com/mike183/PHP-TinyPNGСтарый, но работает может кому пригодится. Как вариант пока для себя рассматриваю следующие:1. Грохнуть все файлы в папке products и далее переделать скрипт так, что бы он при запуске отталкивался от даты последнего запуска и модифицировал только новые файлы.2. Искать как find -perm 644 и далее после модификации менять на 664 (правильно ли это будет?) Так же в заголовках есть Compression-Count: отвечающий за кол-во уже выполненных квантований изображения. Можно нагенерить себе с десяток ключей и менять их, когда счетчик подходит к концу. Цитата Ссылка на сообщение Поделиться на другие сайты
xavior Опубликовано 23 августа, 2015 Автор Жалоба Поделиться Опубликовано 23 августа, 2015 Спасибо большое за идею!Очень классный сервис. Единственное, у меня изображения не под пользователем apache формируются, а под тем пользователем, под которым он запущен.В принципе это не беда, тут главное идея! Кстати, я попробовал, если несколько раз пропускать изображение через shrink, оно становится все меньше и меньше Нашел удобный и просто класс https://github.com/mike183/PHP-TinyPNGСтарый, но работает может кому пригодится. Как вариант пока для себя рассматриваю следующие:1. Грохнуть все файлы в папке products и далее переделать скрипт так, что бы он при запуске отталкивался от даты последнего запуска и модифицировал только новые файлы.2. Искать как find -perm 644 и далее после модификации менять на 664 (правильно ли это будет?) Так же в заголовках есть Compression-Count: отвечающий за кол-во уже выполненных квантований изображения. Можно нагенерить себе с десяток ключей и менять их, когда счетчик подходит к концу.PHP скрипт тоже не плох, мне проще было поставить sh на крон и его редактировать.Думаю чтоб ничего не логировать, проще по правам искать и менять как вы написали в п.2 Цитата Ссылка на сообщение Поделиться на другие сайты
Gloobus Опубликовано 24 августа, 2015 Жалоба Поделиться Опубликовано 24 августа, 2015 Стала очень интересной данная тема и решил наваять квантователь изображений на PHPЗа основу был взят класс указанный мной выше. И так, что умеем:1. Умеем работать только из консоли (CLI)2. Умеем работать со списком API ключей, берем из файла и перебираем. Если один ключ закончился, берем следующий. Если все закончились - прекращаем работу!3. Умеем формировать лог в CSV для дальнейшего удобного анализа в Excel Как пользоваться?1. Качаем архив https://cloud.mail.ru/public/DUwb/RWu3fywXZ2. Распаковываем содержимое в корень Симплы3. В файле keys.txt суем свои API ключи (каждый ключ новой строкой)4. Даем права на выполнение: chmod +x tinify.php5. При необходимости правим в файле tinify.php первой строкой путь к PHP: #!/usr/bin/php 6. Запускаем: ./tinify.php <path>Где <path> это путь к каталогу, относительно расположения скрипта, в котором необходимо обработать изображения. Например, если вы поместили папку со скриптом в корень симплы и необходимо обработать каталог products с изображениями товаров, то запускаем так: ./tinify.php ../files/products7. Запуск: ./tinify.php -h выведет хелп Принцип работы с ключамиСкрипт читает keys.txt и берет от туда ключи. При запуске берет первый ключ, пробуем им работать, если все ок, переходит к следующему найденному изображению в каталоге. Если обработка изображения не прошла, меняет ключ на следующий и пробует опять этот же файл с изображением. Если не один из приведенных ключей более не может работать, работа скрипта завершается с уведомлением в консоле. Принцип работы оптимизатораСкрипт ищет в каталоге, который был указан ему при запуске, все файлы изображений jpg, jpeg, png. Скрипт проверяет наличие в этом каталоге подкаталога .tinypng и если такого нет - создает. Для каждого найденного файла с изображением скрипт ищет файл с аналогичным именем + окончанием .tiny в подкаталоге .tinypng. Если такой файл найден, скрипт читает его содержимое. В нем хранится размер изображение (число в байтах). Если такого файла в подкаталоге .tinypng нет, или размер изображения в нем меньше фактического файла с изображением, то происходит сжатие файла. Новый сжатый файл заменяется старым, так же в подкаталоге .tinypng создается (или перезаписывается) файл с аналогичным названием + окончание .tiny где указывается новый размер сжатого файла.Тем самым, с каждым запуском скрипта обработке поддаются только те файлы, которые ранее не сжимались.По окончании работы скрипта создается подробный лог файл в CSV для удобного анализа в Excel Скорость работы скрипта на моем тестовом хосте ~50 изображений в минуту. Цитата Ссылка на сообщение Поделиться на другие сайты
Furu Опубликовано 21 марта, 2017 Жалоба Поделиться Опубликовано 21 марта, 2017 Сегодня мы будем оптимизировать изображения из папки /products/, не originals!! т.к. они идут уже отрендеренные под определенные размеры и будем это делать с помощью Tinypng.com сервиса. Данная манипуляция позволила в Google Speed Page мне набрать +17 баллов и приблизив меня к отметке 89/100 (изначально было 57/100) Мы будем использовать баш скрипт и ставить его на выполнение 1 раз в неделю по крону. Предусловия: 1. у меня пользователь назывется user1 2. файлы в папке products создаются под пользователем apache 3. нужно установить JQ - apt-get install jq или yum install jq Код tiny.sh скрипта c комментариями: #!/bin/bash # Получаем API ключ на сайте https://tinypng.com/developers. # Бесплатно имеем 500 запросов в месяц. Пока тестируем можем брать # сколько угодно ключей на разные почтовые ящики. API_KEY="CHANGE_ME" if [ $API_KEY = "CHANGE_ME" ] then echo "CHANGE THE API_KEY in this file." exit 1 fi if ! type "jq" > /dev/null then echo "Please install `jq`" exit 1 fi # Указываем полный серверный путь до папки products # И делаем поиск всех изображений с владельцем apache find /var/www/user1/data/www/site.com/files/products -group apache -type f \( -name \*.jpg -o -name \*.png -o -name \*.jpeg \) -print0 | while IFS= read -r -d '' file; do json=$(curl -sS --user api:$API_KEY --data-binary @$file https://api.tinypng.com/shrink) url=$(jq -n "$json.output.url" | sed -e 's/^"//' -e 's/"$//') curl -sS $url > $file # Устанавливаем на файл права пользователя user1 chown user1:user1 $file done # Ищем и удаляем файлы которые меньше 1кб (значит не сконвертировались) # соответственно они сами пересоздадутся с пользователем apache find /var/www/user1/data/www/site.com/files/products -group user1 -type f -size -1k -delete Что делает скрипт: 0. Беслатный лимит обработки 500 изображений 1. Обрабатывает всех изображения с пользователем apache 2. Оптимизирует и сохраняет с пользователем user1 3. При следующих обращениях не трогает уже оптимизированные файлы! Для моих нужд слихвой подходит Для теста запускаем sh tiny.sh ну и потом ставим в крон Привет помоги пожалуйста как его запустить? Цитата Ссылка на сообщение Поделиться на другие сайты
Tamara Опубликовано 23 апреля, 2018 Жалоба Поделиться Опубликовано 23 апреля, 2018 Как можно files\originals фото обрабатывать или нарезать при загрузке?ато папка originals очень много весит. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 23 апреля, 2018 Жалоба Поделиться Опубликовано 23 апреля, 2018 Можно десятками способов. Если у Вас нет знаний предмета и знакомства с внутренней технологией работы Simpla с изображениями, просто и легко вряд ли что-то путное выйдет...К тому же если будете нарезать "на лету", то на размер originals это не повлияет. Но может создать другие проблемы. Самое простое и доступное - обрабатывать фото ПЕРЕД загрузкой. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 23 апреля, 2018 Жалоба Поделиться Опубликовано 23 апреля, 2018 (изменено) Как можно files\originals фото обрабатывать или нарезать при загрузке?ато папка originals очень много весит.http://nginx.org/ru/docs/http/ngx_http_image_filter_module.html https://habrahabr.ru/post/77873/ Изменено 23 апреля, 2018 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
korols221 Опубликовано 30 апреля, 2018 Жалоба Поделиться Опубликовано 30 апреля, 2018 А я использую сервис https://optipic.io/ru/Он легко подключается к сайту и делает все за меня.Никаких скриптов не нужно в кроне ставить. Система даже сама отслеживает появление новых картинок и сразу же их сжимает. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.