Сжать изображение PNG в Python с помощью PIL

Сжатие изображений для ускорения обработки и анализа изображений в настоящее время очень распространено. Его популярность можно объяснить уменьшением нерелевантности и избыточности данных изображения. Чтобы передавать данные в эффективной форме и уменьшить количество битов, необходимых для рендеринга изображения.
Оптимизация хранения может быть достигнута за счет сжатия файлов изображений. Эффективная передача файлов с более низкой пропускной способностью сети также является причиной того, что сжатие изображений является необходимостью часа.
Скорость, с которой технологический прогресс происходит сегодня во всем мире, требует повышения скорости загрузки изображений для официальных целей, когда разрешение не так важно, как доказательство документа.
Используя библиотеку Pillow в Python, мы можем сжимать изображения в любом формате, таком как JPG, PNG и т. д.
Для сжатия изображений в Python используйте библиотеку Pillow. Установите его с помощью
pip install pillow
, затем создайте функцию для изменения размера и сохранения изображения с оптимизированным качеством. Вызовите эту функцию с файлом изображения, чтобы получить сжатую версию, позволяющую оптимизировать хранение и ускорить передачу при сохранении качества изображения.
Использование Pillow для сжатия изображений в Python
В Python множество библиотек содержат предопределенные функции для различных целей. Pillow (PIL) — популярная библиотека Python для сжатия изображений. Используя Pillow, мы можем легко сжимать и уменьшать размер изображений.
На веб-сайтах, которые требуют загрузки тонн изображений от сотен и сотен пользователей, сжатие изображений становится необходимостью, а не просто желанием.
Pillow — это бесплатная библиотека Python с открытым исходным кодом, используемая для обработки изображений, управления ими, сохранения и открытия файлов в различных форматах, таких как PNG, JPG и т. д. Это один из наиболее эффективных методов, которые можно использовать для более быстрого доступа к данным пикселей. изображения. Он был разработан Джеффри Кларком и поддерживается прилив. Чтобы узнать больше о подушке, кликните сюда.
Преимущества и недостатки сжатия изображений
В python есть много преимуществ и недостатков сжатия изображений. Некоторые из них:
Преимущества:
- Делает изображение более переносимым.
- Для увеличения скорости передачи файлов, например загрузки или скачивания изображений в Интернет и из Интернета.
- Уменьшенные размеры изображений потребляют меньше пропускной способности.
- Уменьшение изображения без потерь сохранит почти то же качество и внешний вид изображения, удаляя нерелевантные пиксельные данные, чтобы ускорить обработку изображения.
- На веб-сайтах, которым требуются большие объемы графических данных от миллионов пользователей, сжатие помогает оптимизировать скорость и использование памяти.
- Сжатыми изображениями можно легко обмениваться по электронной почте и на сайтах социальных сетей быстрее.
Недостатки:
- Приводит к снижению качества изображения.
- может привести к потере важных данных пикселей.
- Иногда может не поддерживать наложение изображений.
Предложенный: Модуль Python Pillow — краткое введение.
Сжатие изображений с помощью Python и PIL (код)
В этом разделе руководства мы рассмотрим код для реализации библиотеки подушек для сжатия изображения в Python.
Мы начнем с импорта необходимых модулей, которые должны быть установлены в вашей системе, прежде чем продолжить. Если у вас их еще нет, запустите в командной строке следующее.
Изображение, которое я буду использовать, приведено ниже. Вы можете скачать его или использовать любое изображение в формате .PNG.

Если вы нажмете на свойства вашего изображения, вы увидите размер изображения до сжатия. Исходный размер моего изображения составляет 0,99 МБ (1017,24 килобайта), что указано ниже:

Теперь давайте посмотрим на код, чтобы уменьшить его размер:
# importing the required modules
import os
from PIL import Image
# Function to compress the image
def compressimages(image_file):
# accessing the image file
filepath = os.path.join(os.getcwd(), image_file)
# maximum pixel size
maxwidth = 1200
# opening the file
image = Image.open(filepath)
# Calculating the width and height of the original photo
width, height = image.size
# calculating the aspect ratio of the image
aspectratio = width / height
# Calculating the new height of the compressed image
newheight = maxwidth / aspectratio
# Resizing the original image
image = image.resize((maxwidth, round(newheight)))
# Saving the image
filename = "Compressed.PNG"
image.save(filename, optimize=True, quality=85)
return
# driver code
image_file = "path_of_samplephoto.png"
# calling the function
compressimages(image_file)
print(
"The given image has been compressed, download the files to notice the difference in file size."
)
Вывод будет включать вновь созданное изображение с именем «Compressed.PNG» в каталоге, где хранится исходное изображение. Но это новое изображение будет меньше по размеру. Давайте посмотрим на размеры нового изображения.

Размер изображения, то есть разрешение, теперь уменьшился до 986 КБ с 0,99 МБ, следовательно, сжатие прошло успешно. Сжатое изображение должно быть в порядке, потому что оно должно быть «без потерь» с точки зрения качества изображения. Давайте посмотрим на сжатое изображение.

Изображение, хотя и меньшего размера, сохраняет почти исходное качество и не выглядит грязным! Вот как вы сжимаете изображение в python, используя PIL.
Заключение
В этой статье мы узнали, как сжимать изображения в Python, используя одну из библиотек обработки изображений с открытым исходным кодом под названием Pillow.
PIL или подушка — один из самых мощных модулей для работы с изображениями в Python. Чаще всего он используется для уменьшения размера изображения, явного или неявного преобразования изображения из одного формата в другой, сохранения изображений, сжатия изображений и многого другого.
Поскольку технологии продолжают развиваться, эффективное сжатие изображений становится все более важным как для новичков, так и для экспертов. Как будут развиваться методы сжатия изображений, чтобы соответствовать требованиям будущих приложений?
Ссылка на источник