Без потерь сжатия изображений на django

Я делаю оптимизацию, и Google рекомендует сжатие Lossless для изображений, ища способ реализовать это в Django.

Здесь изображения, которые они указали, я думаю, что для того, чтобы это было сделано эффективно, его необходимо внедрить по всей стране, возможно, используя класс промежуточного программного обеспечения, задаваясь вопросом, действительно ли кто-то это сделал раньше. Здесь ссылка на google analytics для pagespeed https://developers.google.com/speed/pagespeed/insights/?url=www.kenyabuzz.com

Оптимизация изображений Правильное форматирование и сжатие изображений может сэкономить много байтов данных. Оптимизируйте следующие изображения, чтобы уменьшить их размер на 627.3KiB (уменьшение на 74%).

Losslessly compressing http://www.kenyabuzz.com/media/uploads/clients/kenya_buzz_2.jpg could save 594.3KiB (92% reduction).
Losslessly compressing http://www.kenyabuzz.com/media/uploads/clients/new_tribe_2.jpg could save 25KiB (44% reduction).
Losslessly compressing http://www.kenyabuzz.com/…a/uploads/clients/EthiopianAirlines2.jpg could save 3KiB (22% reduction).
Losslessly compressing http://www.kenyabuzz.com/static/kb/images/Nightlife.Homepage.jpg could save 1.3KiB (2% reduction).
Losslessly compressing http://www.kenyabuzz.com/static/kb/img/social/blog.png could save 1.1KiB (43% reduction).
Losslessly compressing http://www.kenyabuzz.com/static/kb/img/social/twitter.png could save 969B (52% reduction).
Losslessly compressing http://www.kenyabuzz.com/…der-Board---Email-Signature--Neutral.jpg could save 920B (2% reduction).
Losslessly compressing http://www.kenyabuzz.com/static/kb/img/social/youtube.png could save 757B (31% reduction).

Ответы

Ответ 1

Без потерь сжатия http://www.kenyabuzz.com/media/uploads/clients/kenya_buzz_2.jpg может сэкономить 594.3KiB (снижение на 92%).

Прежде всего, информация в журналах является довольно вводящей в заблуждение, поскольку невозможно сжать изображения на 92% с использованием формата без потерь (за исключением некоторых случаев, таких как одноцветные изображения, основные геометрические фигуры, такие как квадраты и т.д.). Подробнее читайте этот ответ и этот ответ. Действительно, прочитайте их, оба отличные ответы.

Во-вторых, вы можете использовать форматы сжатия с потерями "без потери качества" – различия настолько тонкие, человеческий глаз даже не замечает.


Итак, я загрузил изображение с сайта, который вы оптимизируете по этой ссылке: http://www.kenyabuzz.com/media/uploads/clients/kenya_buzz_2.jpg

Я открыл свою консоль Python и написал следующее:

>>> from PIL import Image

>>> # Open the image
>>> im = Image.open("kenya_buzz_2.jpg")
>>> # Now save it
>>> im.save("kenya_buzz_compressed.jpg", format="JPEG", quality=70)

Это создало новое изображение на моем диске. Ниже приведены оба изображения.

Оригинал (655.3kB)

исходное изображение


Сжатый (уменьшение 22,4 кБ ~ 96% @качество = 70)

сжатое изображение с использованием Python


Вы можете играть с опцией quality. Например, значение 80 даст вам изображение лучшего качества, но с небольшим большим размером.

Ответ 2

Вам следует попробовать приложение Django Easy Thumbnails, у него есть некоторые опции для добавления постобработки для оптимизации загруженных изображений: Документация по PostProcessor

Я использую его в производстве по нескольким проектам. Он работает хорошо, размер изображения определенно меньше и загрузка страницы намного быстрее.

Ответ 3

У меня нет опыта с этим, однако picopt выглядит всесторонне. Он широко использует внешние инструменты для оптимизации, поэтому может быть сложно настроить в средах с ограниченным или размещенным сервером.

Кроме этого, попробуйте googling "оптимизация образа python". Есть еще несколько ссылок, которые предполагают, что решение на основе PIL может быть возможно, например: