Перейти к содержимому

Как узнать размер картинки python

  • автор:

Узнать размер изображения

Форумчане, не могли бы вы подсказать, как с помощью «Python» и сопуствующих библиотек узнать размер (координаты «X» и «Y») какого-либо изображения?

Отслеживать
11 1 1 золотой знак 2 2 серебряных знака 8 8 бронзовых знаков
задан 8 мар 2015 в 13:11
49 1 1 золотой знак 1 1 серебряный знак 4 4 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

При помощи PIL узнать размер можно так:

from PIL import Image im = Image.open("logo.jpg") (width, height) = im.size 

Отслеживать
ответ дан 8 мар 2015 в 13:14
928 1 1 золотой знак 6 6 серебряных знаков 17 17 бронзовых знаков

  • python
  • изображения
  • pil
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Меняем размер изображения в Python Pillow с обрезанием и изменением ширины и высоты

Изменение размера картинки в Python с Pillow (PIL) с resize() и crop() и другими методами

В Python есть много библиотек по работе с изображениями. Одна из самых известных библиотек — Pillow (ранее PIL). В этой статье будут рассмотрены примеры по изменению размеров картинки с помощью увеличения и уменьшения картинки, а так же обрезания.

Pillow не является стандартной библиотекой и устанавливается отдельно:

pip install pillow

Навигация по посту

  • Получение размеров
  • Изменение размера изображения с resize()
    • Учет соотношения сторон
    • Создание эскиза thumbnail
    • Создание границ изображения с ImageOps.expand

    Получение размеров

    Для получения размера картинки мы должны открыть ее (создать объект класса Image) и получить атрибут ‘size’. Это можно сделать так:

    from PIL import Image image_path = 'F:/hello.png' img = Image.open(image_path) # получаем ширину и высоту width, height = img.size print(width, height) # открываем картинку в окне img.show()

    Получение ширины и высоты картинки в Python Pillow

    Изменение размера изображения с resize()

    Для изменения ширины и высоты есть метод ‘resize’. Этот метод не изменяет текущую картинку, а возвращает новую. Новый размер мы должны указать в виде кортежа ‘(ширина, высота)’. Сохранить картинку можно через метод ‘save’:

    from PIL import Image image_path = 'F:/hello.png' img = Image.open(image_path) # изменяем размер new_image = img.resize((200, 385)) new_image.show() # сохранение картинки new_image.save('F:/hello2.png')

    Изменение размера картинки в Python Pillow

    На примере выше видно, что картинка меняется не пропорционально. Это можно изменить двумя способами:

    Учет соотношения сторон

    Что бы создать пропорциональную картинку вам нужно определиться с размером одно из сторон. В примере ниже указана фиксированная ширина, но вы можете немного изменить скрипт и указать высоту. Мы должны вычислить процентное соотношение старой ширины к новой, а затем умножить ее на высоту:

    from PIL import Image image_path = 'F:/hello.png' # указываем фиксированный размер стороны fixed_width = 200 img = Image.open(image_path) # получаем процентное соотношение # старой и новой ширины width_percent = (fixed_width / float(img.size[0])) # на основе предыдущего значения # вычисляем новую высоту height_size = int((float(img.size[0]) * float(width_percent))) # меняем размер на полученные значения new_image = img.resize((fixed_width, height_size)) new_image.show() new_image.save('F:/hello2.png')

    Пропорциональное изменение размера изображения в Python Pillow

    Создание эскиза thumbnail

    Есть еще один способ выполнить предыдущие шаги автоматически — он называется ‘thumbnail’. Его отличие от resize() в том, что он не может увеличить размер изображения. Если с помощью resize() вы можете изменить размер 200х200 на 400х400, то метод thumbnail() оставит исходный.

    В методе ‘thumbnail()’ создается кортеж с 2-мя числами: максимальная ширина и высота. Понятие «максимальный» нужно оценивать как значение, которое можно менять в меньшую сторону. Если вы возьмете картинку размером 100х100 и захотите ее уменьшить до 100х50, то Pillow высчитает оптимальны размер как 50х50.

    from PIL import Image image_path = 'F:/hello.png' img = Image.open(image_path) # пропорциональное изменение картинки img.thumbnail(size=(350,400)) img.show() img.save('F:/hello3.png')

    Создание мини-изображение с методом thumbnail в Python Pillow

    Обрезание (cropping) картинки

    Для обрезания ненужных частей картинки используется метод ‘crop()’. Внутри этого метода помещается кортеж со значениями (отступами) соответствующие сторонам, которые нужно обрезать. Стороны можно определить следующими переменными:

    (x1,y1,x2,y2)

    Оси x1 и y1 находятся в левой верхней части изображения, а оси x2 и y2 в правой нижней. Левая верхняя часть имеет координаты 0 и 0, а правая нижняя соответствует ширине и высоте изображения. Картинка, которую я использовал в предыдущих примерах, имеет размер 401х385. Если распределить все координаты, соответствующие этой картинке, получится следующий результат:

    (0,0,401,385)

    Оси при обрезании изображения с crop() в Python Pillow

    Представим, что нам нужно обрезать название на картинке — это примерно 60px. Мы должны вычесть (вырезать) это значение из нижнего правого угла (высоты):

    from PIL import Image image_path = 'F:/hello.png' img = Image.open(image_path) size = img.size width, height = img.size # обрезаем картинку new_image = img.crop((0,0,width,height-60)) new_image.show() new_image.save('F:/hello3.png') 

    Обрезание изображения с crop() в Python Pyllow

    Если бы мы хотели оставить только название, то нужно было бы изменить значение y1 (2-ой индекс):

    (0,height-60,width,height)

    Обрезание изображения с crop() в Python Pyllow

    Создание границ картинки и ее увеличение за счет новой области

    Увеличить размер изображения, не растягивая ее (как делает resize()), можно тремя методами.

    Первый, который так же обсуждался в предыдущей части статьи, увеличит изображение без возможности изменения фона (в зависимости от изображения он может быть черным/прозрачным). В примере ниже мы добавим по 50px к каждому углу:

    (-50,-50,width+50,height+50)

    Расширение картинки в Python Pillow

    Второй способ — за счет создания нового изображения и вставки в него старого.

    Для создания нового изображения нужно использовать метод ‘Image.new()’. В этом методе мы должны указать тип картинки, ее ширину и высоту, а так же цвет. Что бы вставить изображение — используется метод ‘paste()’. В нем указывается отступ формата ‘(верх, лево)’ либо вы можете использовать координаты аналогичные методу ‘crop()’.

    В следующем примере мы создадим изображение, которое будет на 50px больше и вставим в него старую картинку. Картинка будет располагаться в 25px от верхнего и левого края:

    from PIL import Image image_path = 'F:/hello.png' old_img = Image.open(image_path) # создание нового изображения new_image = Image.new(old_img.mode, (old_img.size[0]+50, old_img.size[1]+50), 'white') # вставляем старой изображение в новое new_image.paste(old_img, (25, 25)) new_image.show() new_image.save('F:/hello3.png') 

    Добавление границ и заднего фона в Python Pyllow

    Создание границ изображения с ImageOps.expand

    Создать границы картинки (расширить) так же можно через метод ImageOps.expand(). Вообще через модуль ‘ImageOps’ можно проделать все шаги описанные выше, но он может не работать с какими-то типами изображений.

    В метод ‘expand()’ мы должны передать объект ‘Image’, размер границы и цвет. Пример с результатом аналогичным предыдущему:

    from PIL import Image from PIL import ImageOps image_path = 'F:/hello.png' old_img = Image.open(image_path) # создание нового изображения с белым фоном new_image = ImageOps.expand(old_img, border=25, fill=(255,255,255)) new_image.show() new_image.save('F:/hello3.png') 

    Как менять размер изображения при помощи Python?

    Возможно, вам нужно изменить размер фотографии, используя для этого Python. Лично мне это необходимо для размещения изображений для рассылки по почте или для поста на сайте, но изображения слишком большие. Как правило, для этих целей используют редакторы. Я также пользуюсь ими, но ради интереса я покажу, как это делается при помощи языка программирования Python. Самый быстрый способ сделать это – использовать пакет Pillow, который можно установить при помощи pip.

    pip install Pillow

    После этого, открываем свой любимый редактор кода и пробуем следующий код:

    from PIL import Image
    def resize_image ( input_image_path ,
    output_image_path ,
    original_image = Image . open ( input_image_path )
    width , height = original_image . size
    print ( ‘The original image size is wide x ‘
    ‘high’ . format ( wide = width , height = height ) )
    resized_image = original_image . resize ( size )
    width , height = resized_image . size
    print ( ‘The resized image size is wide x ‘
    ‘high’ . format ( wide = width , height = height ) )
    resized_image . show ( )
    resized_image . save ( output_image_path )
    if __name__ == ‘__main__’ :
    resize_image ( input_image_path = ‘caterpillar.jpg’ ,
    output_image_path = ‘caterpillar_small.jpg’ ,
    size = ( 800 , 400 ) )

    Здесь мы импортируем класс Image из пакета Pillow. Далее, мы видим функцию, которая принимает три аргумента:

    • Локация файла, который мы хотим открыть;
    • Локацию, куда мы хотим сохранить измененное изображение;
    • Кортеж, который демонстрирует новый размер изображения, где кортеж – это ширина и высота.

    Далее, мы открываем изображение и вводим его размер. После этого, мы вызываем метод resize() объекта изображения с размером переданного кортежа. Наконец, мы берем новый размер, выводим его и открываем изображение перед тем, как сохранить изменения. Теперь оно выглядит вот так:

    Как менять размер изображения при помощи Python?

    Как мы видим, метод resize() ничего не делает с масштабированием. Давайте разберемся с этой задачей!

    Масштабирование изображения

    Скорее всего, изменять размер изображения таким образом, как мы видели выше, вам не хочется, для лучшего результата нужно написать метод масштабирования. Проблема с предыдущим методом в том, что он не учитывает соотношения сторон картинки. Так что вместо изменения размера, вы можете просто использовать метод thumbnail(). Давайте попробуем:

    Как узнать размер картинки, и для чего нужны разные форматы?

    Существует сразу несколько различных форматов изображений. Узнав формат картинки и ее размер, вы сможете грамотно использовать ее для размещения на собственном сайте. Например, знаете ли вы, что для рисунков с небольшим количеством резких переходов лучше использовать формат JPG, а для фотографий с повышенной резкостью — формат PNG?

    В этой статье будут рассмотрены способы, позволяющие узнать размер картинки, основные графические форматы, которые используются на просторах интернета, их отличия. К наиболее распространенным форматам изображений относят JPG, PNG, SVG и GIF.

    Обновлено: 2023-07-11 20:29:57 ЕС Евгений Самсонов автор материала

    Как узнать размер картинки и зачем это нужно?

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

    Слишком большие картинки будут мешать быстрой загрузке сайта, и тем самым повышать процент отказов, ухудшая рейтинг сайта в поисковой выдаче. Низкокачественные, неинформативные и слабо привлекающие внимание пользователей картинки также негативно скажутся на продвижении интернет-ресурса в поисковых системах.

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

    Вывод: знать размер картинок — важно, потому что их вес влияет на скорость загрузки сайта, а она в свою очередь оказывает влияние на продвижение.

    Как узнать размер фотографии, сохраненной на компьютере?

    Как узнать размер фотографии, сохраненной на компьютере?

    Чтобы узнать вес фотографии, сохраненной на компьютере, достаточно заглянуть в ее «Свойства». Клик правой кнопкой мыши по изображению и выбор соответствующего пункта в контекстном меню выведет соответствующее окно с информацией о ширине и высоте фотографии в пикселях. Также здесь будет показано разрешение в DPI.

    Совет: если нужно узнать размер и разрешение сразу нескольких изображений — откройте вкладку «Вид», затем выберите формат «Детали» и поставьте галочку в боксе «Разрешения». Это позволит узнать размер каждой картинки.

    Как узнать размер изображения, размещенного на любом сайте?

    Чтобы узнать размер фотографии, размещенной на сайте, воспользуйтесь следующей инструкцией:

    1. Если вы используете браузер Mozilla Firefox — кликните правой кнопкой мыши по картинке, затем выберите в контекстном меню пункт «Информация об изображении». Это действие выведет информационное окно, в котором будет показан оригинальный размер изображения и его измененный вариант, который используется на сайте.
    2. Если вы используете браузер Google Chrome — щелкните правой кнопкой мыши по изображению, после чего выберите в контекстном меню пункт «Просмотр кода элемента». В появившемся после этого окне будет виден размер картинки (с правой стороны в цветной рамке). Либо навести мышкой на выделение в правом окне, тогда над выделенной картинкой появится размер картинки.
    3. В современных версиях браузера Opera узнать размер изображения с помощью встроенных инструментов не получится. Но выход есть! Установите дополнение « Classic Images» , с помощью которого можно узнавать тип, размер, разрешение и адрес картинки. Алгоритм действий такой же, как и в браузере Firefox — клик правой кнопкой мыши, затем пункт «Просмотр свойств изображения».

    Какие существуют форматы изображений

    Сейчас в интернете применяют четыре основных графических формата — JPEG, PNG, SVG, GIF. Каждый из них имеет свои особенности, используется для определенных ситуаций. Рассмотрим каждый формат изображений более подробно.

    JPEG

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

    PNG

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

    SVG

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

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

    GIF

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

    Итоги

    Размер картинок важно узнавать для внутренней оптимизации сайта. Уменьшение размера используемых картинок позволит увеличить скорость загрузки сайта, что положительно скажется на SEO. Важно стараться уменьшать размер изображений без потери качества, а также необходимо знать, какой формат изображений подойдет для вашей ситуации лучше других.

    Чтобы узнать размер изображения, чаще всего достаточно кликнуть правой кнопкой мыши и выбрать соответствующий пункт контекстного меню. Для браузера Opera может потребоваться установка дополнительного расширения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *