2015-10-12 10 views
16

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

Вот изображения, которые они указали, я думаю, что для его эффективного выполнения он должен быть реализован в системе, возможно, с использованием класса промежуточного программного обеспечения, задающегося вопросом, действительно ли кто-то это сделал раньше. Вот ссылка на google analytics for 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). 
+0

Следуйте по ссылке https://developers.google.com/speed/docs/insights/OptimizeImages с самой страницы, на которую вы ссылаетесь, предоставляет большую информацию. Вы еще это читали? – mhawke

+0

Да, но я не знаю, как реализовать то же самое с python или Django. Я googled «Losslesly сжатия изображений django» и не получил никакой информации об этом. –

+0

Зачем это делать в Django - есть ссылка с страницы оптимизации Google, которая позволяет Google делать это за вас. Возьмите эти изображения, загрузите их на сервер, скопируйте и выполните. – professorDante

ответ

2

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

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

  1. How to reduce the image file size using PIL
  2. Image Optimization (Google App Engine with Python)
3

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

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

19

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

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

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


Итак, я скачал изображение с веб-сайта вы оптимизируя по этой ссылке: 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)

original image


Сжатый (22.4kB ~ 96% снижение @ качество = 70)

compressed image using Python


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

+2

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

+0

Это не работает для меня. Я попытался уменьшить изображение с 1 МБ, но у меня появилось новое изображение с 1,9 МБ: | –

+0

@ Overflow012 Вы устанавливаете значение 'quality' больше, чем' 95'? Известно, что размер файлов увеличивается. – xyres