Есть ли очевидный способ сделать это, что я скучаю? Я просто пытаюсь сделать эскизы.
python
image
python-imaging-library
thumbnails
saturdayplace
источник
источник
Ответы:
Определите максимальный размер. Затем вычислите коэффициент изменения размера, взяв
min(maxwidth/width, maxheight/height)
.Правильный размер есть
oldsize*ratio
.Конечно, для этого есть и библиотечный метод: метод
Image.thumbnail
.Ниже приведен (отредактированный) пример из документации PIL .
источник
s= img.size(); ratio = MAXWIDTH/s[0]; newimg = img.resize((s[0]*ratio, s[1]*ratio), Image.ANTIALIAS)
? (это для деления с плавающей запятой, хотя :)ANTIALIAS
больше не является предпочтительным для пользователей популярной вилки подушки из PIL. pillow.readthedocs.org/en/3.0.x/releasenotes/…thumbnail
работает , только если результирующее изображение меньше исходного. Из-за этого я бы предположил, что использованиеresize
- лучший способ.Этот скрипт изменит размер изображения (somepic.jpg) с помощью PIL (Python Imaging Library) до ширины 300 пикселей и высоты, пропорциональной новой ширине. Он делает это, определяя, какой процент 300 пикселей имеет исходную ширину (img.size [0]), а затем умножая исходную высоту (img.size [1]) на этот процент. Измените «basewidth» на любое другое число, чтобы изменить ширину изображений по умолчанию.
источник
sompic.jpg
. Почему это происходит? Я использую Python 3.x.jpeg
, используйтеimg.save('sompic.jpg', 'JPEG')
.PIL.Image.ANTIALIAS
возможностиresize
, должно быть на самом делеPIL.Image.LANCZOS
, хотя они оба имеют1
ценность, см. pillow.readthedocs.io/en/3.1.x/reference/…Я также рекомендую использовать метод миниатюр PIL, потому что он удаляет все трудности отношения с вами.
Однако один важный совет: заменить
с
по умолчанию PIL использует фильтр Image.NEAREST для изменения размера, что приводит к хорошей производительности, но низкому качеству.
источник
Image.thumbnail
.Основываясь на @tomvon, я закончил использовать следующее (выберите ваш случай):
а) Изменение высоты ( я знаю новую ширину, поэтому мне нужна новая высота )
б) Изменение ширины ( я знаю новую высоту, поэтому мне нужна новая ширина )
Тогда просто:
источник
resize
вызове, вы используетеnew_width
для высоты и ширины?PIL уже имеет возможность обрезать изображение
источник
источник
Если вы пытаетесь сохранить такое же соотношение сторон, то не измените ли вы размер в процентах от исходного размера?
Например, половина оригинального размера
источник
Я использую эту библиотеку:
источник
Если вы не хотите / не хотите открывать изображение с помощью Подушки, используйте это:
источник
Просто обновите этот вопрос более современной оболочкой. Эта библиотека обертывает Pillow (форк PIL) https://pypi.org/project/python-resize-image/
Позволяет вам сделать что-то вроде этого:
Куча еще примеров в приведенной выше ссылке.
источник
Я пытался изменить размеры некоторых изображений для видео слайд-шоу, и поэтому я хотел не только одно максимальное измерение, но максимальную ширину и максимальную высоту (размер видеокадра).
И всегда была возможность портретного видео ...
Image.thumbnail
метод был перспективным, но я не мог сделать это высококлассным меньшее изображением.Поэтому после того, как я не смог найти очевидный способ сделать это здесь (или в некоторых других местах), я написал эту функцию и поместил ее здесь для следующих:
источник
Простой метод для сохранения ограниченных соотношений и передачи максимальной ширины / высоты. Не самая красивая, но выполняет свою работу и легко понять:
Вот скрипт Python, который использует эту функцию для запуска изменения размера изображения.
источник
Обновили ответ выше по "tomvon"
источник
Мой безобразный пример.
Функция получает файл наподобие «pic [0-9a-z]. [Extension]», изменяет их размер до 120x120, перемещает сечение в центр и сохраняет в «ico [0-9a-z]. [Extension]», работает с портретом и ландшафт:
источник
Я изменил размер изображения таким образом, и он работает очень хорошо
источник
Я также добавлю версию изменения размера, которая сохраняет соотношение сторон фиксированным. В этом случае он будет регулировать высоту в соответствии с шириной нового изображения, основываясь на исходном соотношении сторон, asp_rat , который является float (!). Но чтобы настроить ширину на высоту, вам просто нужно закомментировать одну строку и раскомментировать другую в цикле else . Вы увидите, где.
Вам не нужны точки с запятой (;), я оставляю их только для напоминания о синтаксисе языков, которые я использую чаще.
И это сделано. Я постарался документировать это как можно больше, чтобы это было понятно.
Я надеюсь, что это может быть полезным для кого-то там!
источник
Откройте свой файл изображения
Используйте метод PIL Image.resize (size, resample = 0) , где вы заменяете (ширину, высоту) своего изображения размером 2-кортеж.
Это будет отображать ваше изображение в оригинальном размере:
Это будет отображать ваше изображение в 1/2 размера:
Это будет отображать ваше изображение в 1/3 размера:
Это будет отображать ваше изображение в 1/4 размера:
и т. д.
источник
display()
и где находится?источник
Вы можете изменить размер изображения с помощью кода ниже:
источник