Автор оригинала: Saptak Sengupta.
Загрузка изображений является важной частью сервера. Изображения могут приходить в определенных форматах и преобразовываться в другие форматы после применения определенных модификаций JavaScript. Например, когда изображение загружается после обрезки в Open Event Organizer Server, оно автоматически сохраняется в виде PNG-файла. Однако формат PNG более чем в пять раз больше, чем формат изображения JPEG. Поэтому, когда мы загружаем изображение размером 150 КБ, оно достигает сервера примерно в 1 МБ, что очень много. Поэтому нам нужно решить на сервере, какой формат изображений выбрать в разных случаях и как их конвертировать.
JPEG – Файлы JPEG были разработаны для того, чтобы сделать детальные фотографические изображения как можно меньше, удалив информацию, которую человеческий глаз не заметит. Таким образом, размер изображения намного меньше, чем у PNG. Однако файлы JPEG не могут хранить информацию об альфа-прозрачности изображения. Таким образом, если информация о прозрачности не требуется, JPEG является наиболее масштабируемым решением.
PNG – PNG-это отличный формат, который сочетает в себе кодирование без потерь с прямым цветом (тысячи цветов, как и JPEG). Он также поддерживает альфа-прозрачность. Фотография, сохраненная в формате PNG, скорее всего, будет как минимум в 5 раз больше, чем эквивалентное изображение JPEG, что немного улучшит видимое качество. Итак, если размер файла не является проблемой и вы хотите получить максимально возможное качество, то PNG-это правильный путь.
В нашем случае большинство изображений будет загружено на наш сайт. Так что чем меньше, тем лучше. Поэтому мы храним большинство больших файлов изображений в формате JPEG, преобразуя PNG в JPEG с помощью PIL (Python Image Library).
Преобразование PNG в JPEG
Библиотека изображений Python Imaging Library , или, короче говоря, PIL, является одной из основных библиотек для обработки изображений в Python. К сожалению, его развитие застопорилось, и последний релиз состоялся в 2009 году.
К счастью для вас, есть активно разрабатываемая вилка PIL под названием Pillow -она проще в установке, работает на всех операционных системах и поддерживает Python 3.
Наиболее важным классом в библиотеке изображений Python является класс Image
, определенный в модуле с тем же именем. Вы можете создавать экземпляры этого класса несколькими способами: либо загружая изображения из файлов, обрабатывая другие изображения, либо создавая изображения с нуля.
При преобразовании из PNG в JPEG мы создаем новый файл изображения в формате JPEG, читаем изображение PNG, а затем вставляем прочитанное изображение во вновь созданное пустое изображение JPEG. Затем файл изображения JPEG сохраняется. Это основная идея преобразования из PNG в JPEG.
Как вы можете видеть, при сохранении изображения JPEG мы можем указать качество, в котором оно будет сохранено. Поэтому, если мы хотим, мы можем взять качественный ввод для преобразования от администратора, а затем решить качество при переходе с PNG на JPEG.
Это важная особенность, потому что большинство больших изображений, таких как фон или фон заголовка, уже имеют огромный размер. Манипулирование такими изображениями и сохранение файлов в формате PNG только увеличивает их размер.. Таким образом, учитывая простоту оформления страницы, вам может быть удобнее хранить такие изображения в формате JPEG.Это сделает ваш сайт более масштабируемым и ускорит загрузку изображений.
Этот пост был первоначально размещен автором на fossasia Эта версия была отредактирована для ясности и может отличаться от оригинальной записи.