2012-06-10 6 views
2

Я не нашел аналогичный вопрос, который я ищу для оптимизации изображений.Оптимизация изображения (Google App Engine с Python)

Я проверил, сколько Facebook может оптимизировать изображение загруженное:

980KB -> 77Кб

846KB -> 62.1KB

Из того, что я узнал, Facebook способен оптимизировать изображение до 10 раз, сохраняя при этом минимальное качество изображения, как и для теста выше.

Итак, может ли кто-нибудь поделиться наилучшими способами, которые вы использовали для оптимизации изображения, загруженного пользователем?

Когда я искал в Интернете, я видел, как некоторые сайты предлагают платные услуги для оптимизации изображений. Однако мы предпочитаем не подписываться на любой платный сервис для оптимизации изображений на данном этапе.

Я разрабатываю проект с языком Python в среде Google App Engine. Любая часть, где мы можем повторно использовать библиотеки Python или даже библиотеки Google App Engine для достижения этого?

+0

IMO, Facebook выдает изображения в меньшем разрешении, но при этом предлагает изображение с более высоким разрешением для загрузки. – SuperSaiyan

ответ

3

Базовая оптимизация сводится к:

  1. Выбор соответствующего формата изображения (обычно в формате JPEG для фотографий, вы можете использовать JPEG через борт, если вы не обеспокоены качеством изображения, но в противном случае детские для снятия скриншотов и т.д. может быть мудрым)

  2. Уменьшение изображения до наименьшего разрешением, подходящим для применения

  3. Увеличение степени сжатия до максимально возможного уровня, а сохраняя ваши стандарты качества

Вы также можете придираться путем удаления посторонних метаданных, но это обычно не требуется и не желательно.

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

Обычно для этой задачи я бы использовал ImageMagick via the PythonMagick bindings, но это может оказаться невыполнимым в Google Apps Engine. В этом случае, возможно, посмотрите на Python Imaging Library.

+0

Hi @Andrew Gorcester, это очень информативный классный обмен! Благодаря ! Цените это и будете иметь в виду ваши предложения. :) – MrCooL

4

Возможно, вам стоит задать вопрос this, чтобы получить функцию pngcrush, добавленную в API изображений AppEngine.

+0

Нам нужно больше людей, чтобы эта тема была выпущена! ха-ха .. – MrCooL

1

К сожалению, вы не можете использовать PythonMagick. Но можно установить Python Imaging Library, и см. Google Imaging Service о том, как его использовать.

Нет оптимизатора волшебной пули facebookesque. Вам придется попытаться разработать свой собственный, который соответствует стандартам, в которых вы нуждаетесь.Большинство изображений в эти дни составляют 5mp и их изменение до 1280x720 или менее, как правило, на веб-сайтах. Возможность изменения постороннего изображения также желательно перед изменением размера.

0

Другое решение - использовать 3rd party api, в этом случае вы можете использовать tinyPNG. Алгоритм сжатия, вероятно, один из лучших. Проверьте там руководство разработчика здесь ~>

https://tinypng.com/developers

Первые 500 фотографий в месяц бесплатно & это как 0,009 $ на изображение (> 500 & & < 9500) или $ 0,002> 10000 изображений.