Елена Б.
6863 сообщения
#10 лет назад
Питаю слабую надежду, что есть готовое решение, но даже не могу объяснить гуглу, что мне надо - получаю только теорию. 
Есть сервер с диском на 100 гиг. На нем есть сайт, на сайте более 300 тыс (!) категорий с изображениями. Изображения эти занимают 80 гиг. Остается свободными 20 (цифры грубы, так как размерами остальных файлов и базы можно пренебречь)
Рядом на том же сервере делается новый сайт с упорядоченным контентом, в который переносится примерно 1/3 изображений. Места не хватает. Держа в уме вариант докупить место, все же, хочется найти способ решить задачу без расширения. 
Дело в том, что изображения - это ч/б схемы. Пример . Тримминг и сохранение в пнг8  в оттенках серого уменьшает его в 2 раза. Если еще и вычистить ватермарк - можно сделать еще компактнее. 
Наверняка есть инструменты, которые помогут прогнать эту задачу на сервере, не изобретая велосипед. 
Нюанс: директория с фотками не читается, инструмент должен либо сам уметь это обходить, либо быть открытым, чтоб подружить его с БД, где имена файлов надо брать. 
Владимир О.
206 сообщений
#10 лет назад
Елена, попробуйте поискать по утилите командной строки imagemagick - 
Для нее есть класс в php, можно использовать из консоли.  Конкретный совет дать не смогу, но скорее всего решение в ней найдется.

А как затереть ватермарк я бы и сам с интересом узнал.  Поделитесь потом рецептом, если будет время.
Роман Беляев
16382 сообщения
#10 лет назад
Цитата (floppox):
Держа в уме вариант докупить место, все же, хочется найти способ решить задачу без расширения.
Просто докупи место.
Можно, конечно, налепить симлинков, но что-то мне кажется это не лучшим решением. А все потому, что лучшее решение - докупать места.
Сергей Глушко
834 сообщения
#10 лет назад
floppox,
писал как то скрипт на php читал директорию и применял exec() Optipng и Jpegoptim
Докупать место - Не лучший вариант, во первых ежемесячные затраты, во вторых оптимизация картинок положительно скажется на скорости загрузки страниц, так как некоторые картинки оптимизируются до 90% без потери качества
Роман Беляев
16382 сообщения
#10 лет назад
micros, место придется докупать, насколько я понимаю, только на время переезда. Иначе держать дубли в любом случае тупо. Так что тут либо надо что-то менять в консерватории, либо вообще те копейки значения иметь не будут. Оптимизация размера сжатых изображений это очень часто потеря качество, которое вообще никак не вернуть, сколько места не докупай. Одна оптимизируется на 90%, а соседняя потеряет в качестве 90%. Просматривать все обработанные изображения?

В общем испортить все достаточно просто, головняка вагон, затрат времени вагон, профит от минимального до сильно отрицательного. Не занимайтесь ерундой.
Сергей Глушко
834 сообщения
#10 лет назад
Цитата:
Одна оптимизируется на 90%, а соседняя потеряет в качестве 90%
не один и не два раза применял данные утилиты, ниразу не потерялось качество, они и предназначены для сжатия под веб, без потери качества=) пожете проверить работу таких утилиток на сайте 
Цитата:
затрат времени вагон

да ладно=)

$q = db_query("select `image` from `prod_image` "); //     and `ID` = '79649'
while($res = mysql_fetch_assoc($q))
{
$simg = $res;
if (stristr($simg, "png")) { 
exec ("optipng ".$simg); // Если png
} elseif (stristr($simg, "jpg"))
{
exec ("jpegoptim ".$simg);  // Если jpg
}
}

Вот только что за 3 минуты написано=))))
Роман Беляев
16382 сообщения
#10 лет назад
micros, работать тоже будет три минуты, небось? Цитата (micros):
они и предназначены для сжатия под веб, без потери качества=)
Ага. Может еще из md5 хэша восстанавливают картинки, не?
Простая арифметика подсказывает нам, что надо сжать 80Гб уже сжатых картинок до 50Гб. Без потери качества. Ага ага
Сергей Глушко
834 сообщения
#10 лет назад
frig,md5 это тут причем? Нечего сказать? Про три минуты -  проверьте. Про уже сжатые -  не путайте обрзку изображений и их оптимизацию. Почитайте гугл page speed и рекомендации по поводу оптимизации картинок.
Елена Б.
6863 сообщения
#10 лет назад
В моем случае от перевода в оттенки серого точно никто не пострадает, так как изображения и так чертежи. А результаты эксперимента я привела в начале - в два раза выигрыш в объеме.
Утилиту еще не смотрела, займусь этим может даже не завтра, но, если она удаляет такие вещи, как артефактный невидимый фон в пнг, то потерь так же не будет.  
Андрей Халецкий
3562 сообщения
#10 лет назад
Цитата (frig):
Просто докупи место.
+1, при текущих ценах на хостинг даже думать не нужно
Роман Беляев
16382 сообщения
#10 лет назад
Цитата (micros):
Нечего сказать?
Есть. Причем по делу.
Сергей Глушко
834 сообщения
#10 лет назад
floppox,
- исходник 79,353 кб
- после оптимизации advpng в extreme режиме 53,763
для PNG 38% - без тримминга, и как видим без потери качества
для jpeg  картинок там все намного радужней
- исходник вашей картинки в формате jpg 72,769 кб
- результат утилиты jpegoptim  /путь --strip-all -f -m50  -27,061 кб
без тримминга 62% сжатие, и опять незаметно по качеству, заметно становится при -m30 параметре

итого: минимум экономите из 80 гиг 25 гиг максимум 45 гиг - примерно=)

а и еще для PNG одна картинка сжатие примерно на одном ядре 2 ггц - 0,01 сек, для jpg - не считает но намного быстрей, потому что даже нету задержки выполнения команды=) очень быстро))
Елена Б.
6863 сообщения
#10 лет назад
Спасибо. Обязательно опробую в работе. Но только сперва перенесу "хучу" записей в БД и дубли почищу, а уж потом картинки. 
Сергей Глушко
834 сообщения
#10 лет назад
floppox,я щас по проекту работаю оптимизации скорости работы сайта+) не думал оптимизировать картинки, там 3,3 гига=) но решил что не помешает, результат отпишу)
floppox, и так первый скрин видно примерно уровень сжатия, использовал два параметра - "Удаление мета" и сжатие 50% - вот для общей картинки


Второй скрин замер свободного места на диске было 3,5 стало 4,9 гига свободно, тоесть из 3,3 гиг картинок сжалось на 1,3 гига


Итого 1,3 гига сжато из 3,3, 25 минут времени+)

find -name "*.jpg" -exec jpegoptim --strip-all -m50 '{}' \;
Павел Л.
116 сообщений
#10 лет назад
Формат Gif, имхо, самый оптимальный для таких схем.
Оригинал - - 80К
Гиф - - 26К