Онлайн-инструмент для обрезания изображений
Обрезайте картинки онлайн для идеальной компоновки кадров.
Перетащите файлы сюда
Выберите файл
Add sample file
30,000+ пользователей
1,500+ пользователей
Оставайтесь на связи:
Оцените инструмент 4.5 / 5
Чтобы оставить отзыв, преобразуйте и скачайте хотя бы один файл
Сделать изображение квадратным на Python
Подскажите, как сделать с помощью Python изображение квадратным? Например, есть у меня изображение 800х600, получаю из него 800х800, недостающие пиксели заполняются каким-то цветом. 600х800 тоже превращается в 800х800. Желательно ещё центрировать, чтобы в итоговом изображение исходное находилось по центру. Я почти новичок в Python, так что буду благодарен за как можно более подробный ответ.
Отслеживать
задан 6 фев 2018 в 11:32
Artem Altuhov Artem Altuhov
105 12 12 бронзовых знаков
если вы новичок, то разбейте задачу на более мелкие шаги и отдельные Stack Overflow вопросы задайте. К примеру, «как прочитать размер изображения», «как создать изображение заданного размера», «как вставить одно изображение в другое», «как найти координаты, чтобы изображение по центру вставлялось», «как сохранить изображение в Питоне в X формате»
6 фев 2018 в 11:47
Если в общих чертах, то определить больше ли исходное изображение, чем 800х800. Если да, уменьшить с сохранением пропорций до 800 пикселей по наибольшей стороне. Создать пустое фоновое изображение 800х800. Вставить исходное изображение в центр фонового. Сохранить. Все эти операции можно выполнить с использованием библиотеки Pillow и простейших арифметических операций.
6 фев 2018 в 14:12
@SergeyGornostaev про уменьшение, как я понял, речь в вопросе не идёт. К примеру, если на входе 20×1000 картинка, то результат это 1000×1000 картинка (решение это шаги из моего первого комментария).
7 фев 2018 в 6:38
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
def resize_img(file, new_file, max_size): img = Image.open(pic_adress+file) if img.size[1] > img.size[0]: height = max_size ratio = (height / float(img.size[1])) width = int((float(img.size[0]) * float(ratio))) img = img.resize((width, height), Image.ANTIALIAS) img.save(pic_adress+new_file) else: width = max_size ratio = (height / float(img.size[0])) height = int((float(img.size[1]) * float(ratio))) img = img.resize((width, height), Image.ANTIALIAS) img.save(pic_adress+new_file) def white_board(img_adress, new_image_adress): img = Image.open(pic_adress+img_adress) white_img = Image.open(pic_adress+'white.jpg') x = int((white_img.size[0] - img.size[0])/2) y = int((white_img.size[1] - img.size[1])/2) white_img.paste(img,(x,y)) white_img.save(pic_adress+new_image_adress) resize_img('img.jpg','resized_img.jpg',600) white_board('resized_img.jpg','new_image.jpg')
Отслеживать
ответ дан 7 фев 2018 в 18:44
Artem Altuhov Artem Altuhov
105 12 12 бронзовых знаков
Строчки img = img.resize((width, height), Image.ANTIALIAS) img.save(pic_adress+new_file) можно вынести за пределы if , потому что они идентичные.
8 фев 2018 в 13:40
Чтобы вставить заданное изображение в квадрат, заполненный заданным цветом, со стороной не более заданной (если нужно уменьшив до его размеров исходное изображение перед вставкой, сохраняя пропорции):
from PIL import Image # $ pip install pillow def make_square(old_path, new_path, max_size=600, fill_color=(0, 0, 0)): # find image dimensions old_img = Image.open(old_path) size = (min(max_size, max(old_img.size)),) * 2 # resize if old image is larger than max_size if size[0] < old_img.size[0] or size[1] < old_img.size[1]: old_img.thumbnail(size) # create new image with the given color and computed size new_img = Image.new(old_img.mode, size, fill_color) # find coordinates of upper-left corner to center the old image in the new image assert new_img.size[0] >= old_img.size[0] assert new_img.size[1] >= old_img.size[1] x = (new_img.size[0] - old_img.size[0]) // 2 y = (new_img.size[1] - old_img.size[1]) // 2 # paste image new_img.paste(old_img, (x, y)) # save image new_img.save(new_path)
Пример, исходная картинка:

#!/usr/bin/env python3 from pathlib import Path from urllib.request import urlretrieve filename = 'moon10.jpg' # old path is relative to the script # just an example old_path = Path(__file__).parent.resolve() / filename if not old_path.exists(): urlretrieve('http://astro.unl.edu/misc/moonpics/' + filename, old_path) # new path is relative to working dir make_square(old_path, new_path='square_' + filename)
Скрипт закачивает [public domain] картинку (если она ещё не скачана) и кладёт рядом со скриптом. Затем создаётся квадратная картинка и сохраняется в текущую рабочую директорию. См. Текущая директория в Python.
Результат, квадратная картинка:
Как сделать квадратные изображения?
Если пропорции не совпадают, то можно
1. растянуть
2. обрезать
3. повторять картинку
4. дополнить фоновым цветом/изображением.
Ответ написан более трёх лет назад
Нравится 4 3 комментария

lue merg @luemerg Автор вопроса
мне надо ее сделать как маску в фотошопе надеюсь ты понял

lue merg @luemerg Автор вопроса
а то что ты перечислил это все не красиво это ме
Stalker_RED @Stalker_RED
lue merg: Это вариант 2 — обрезать.
jsfiddle.net/Lqm08qtr

frontend-developer
Здесь в любом случае понадобится бекенд.
Как пример, можно определять ориентацию изображения и дальше от класса .horizontal или .vertical позиционировать через css (absolute, width/height: 100% — в зависимости от класса, left/top: 50% — в зависимости от класса, transform: translateX(-50%)/translateY(-50%) — тоже в зависимости от класса).
В таком случае оригинальные размеры изображения сохраняются (пользователь может его сохранить таким же).
Ну либо бекендом делать обычный crop.
Как сделать из прямоугольной фотографии квадратную
Как сделать из прямоугольной фотографии квадратную в фотошопе быстро и легко. Поговорим сегодня об этом. Уверяю Вас это просто элементарно. И если про одну фотографию проблем точно нет, то вот обработать допустим несколько сотен фотографий будет уже трудновато.
В связи с этим на выручку нам приходит очень крутая программа FastStone Photo Resizer. Благодаря ей, Вы сможете максимально эффективно реализовать эту задачу. Вам потребуется только правильно ее настроить и Вы не заметите, как все остальное она сделает за Вас.
Как сделать из прямоугольной фотографии квадратную: видео
Ниже я прикрепляю подробное видео, в котором расскажу, как просто и легко можно сделать из прямоугольной фотографии квадратную.
