coru

Создание полезных сайтов

Как изменить размер картинки без искажений: обрезка или поля

Если пропорции исходника и цели различаются, выбери главное: целая картинка, точный холст или заполнение до краёв. На проверяемом примере показываем, что сохраняет и теряет каждый вариант.

Исходник 1600×900 содержит круг и две метки у краёв. Вписывание даёт 1200×675. Обрезка по центру даёт 1200×1200 и удаляет обе метки. Добавление белых полей даёт 1200×1200 и сохраняет метки. Растяжение даёт 1200×1200, но превращает круг в вытянутый овал.
Оригинальная схема Coru по локальной проверке ImageMagick 7.1.2-34. Все четыре результата получены из одного непрозрачного PNG 1600×900. Вписывание сохраняет всё изображение размером 1200×675. Обрезка по центру сохраняет пропорции, но удаляет обе краевые метки. Добавление полей сохраняет вписанное изображение и добавляет белые полосы: 262 пикселя сверху и 263 снизу. Растяжение сохраняет метки, но искажает круг. Только последние три файла имеют размер 1200×1200. Геометрия построена по измеренным границам фигур; это поясняющая схема, не снимок программы. Иллюстрация: Coru — оригинальная схема. Авторские геометрия SVG и текст Coru на основе собственного тестового изображения и локальных измерений результатов ImageMagick; сторонние иллюстрации не использованы.

Выбери, что нужно сохранить

Картинка 1600 × 900 — широкий прямоугольник, а поле загрузки 1200 × 1200 — квадрат. Обычное пропорциональное масштабирование не заполнит такой квадрат целым прямоугольником: придётся обрезать часть содержимого, добавить поля или согласиться на другой итоговый размер. Независимое растяжение по ширине и высоте меняет формы внутри изображения.

  • Нужен ровно квадрат, а краями можно пожертвовать? Выбери обрезку и проверь главный объект перед сохранением.
  • Нужно сохранить всю картинку внутри квадрата? Впиши её в квадратный холст и добавь поля.
  • Ограничены только максимальные ширина и высота? Уменьши пропорционально; результат не обязан быть квадратным.

Если работаешь в графическом редакторе

Сохрани оригинал и работай с копией. Для квадратной обрезки задай пропорции рамки 1:1, перемести её так, чтобы сохранить важный объект, примени обрезку и измени размер результата до 1200 × 1200 пикселей с сохранением пропорций. Для полей сначала пропорционально уменьши всю картинку 1600 × 900 до 1200 × 675, затем расширь холст до 1200 × 1200 и помести изображение по центру на выбранном фоне.

Размер изображения меняет пиксели самой картинки. Размер холста меняет область вокруг них, а при уменьшении может обрезать содержимое. Перед применением проверь предпросмотр. Это названия операций, а не обещание одинаковых пунктов меню во всех редакторах.

Проверяемый пример: круг и две метки по краям

Мы создали картинку 1600 × 900 с кругом и метками у левого и правого края. Каждый вариант получен заново из оригинала, а не повторным изменением предыдущего результата.

  • Вписывание: 1200 × 675. Круг сохраняет пропорции, обе крайние метки остаются. Этот файл не квадратный.
  • Обрезка по центру: 1200 × 1200. Круг сохраняет пропорции, но обе крайние метки исчезают. Верные размеры ещё не доказывают, что важное содержимое сохранилось.
  • Белые поля: 1200 × 1200. Внутри находится картинка 1200 × 675; круг и обе метки остаются. Общая высота свободного места — 525 пикселей.
  • Принудительное растяжение: 1200 × 1200. Обе метки остаются, но круг становится вытянутым вверх овалом.

Повтори локально через ImageMagick 7

Установи ImageMagick с официальной страницы загрузки, затем проверь magick -version. В однострочных командах ниже рабочий файл input.png находится в текущей папке. Выбирай новые имена результатов и сохраняй оригинал: существующий выходной файл может быть перезаписан. Примеры рассчитаны на одну правильно ориентированную непрозрачную PNG-картинку, а не анимацию или файл камеры с метаданными поворота.

Аргументы размеров взяты в кавычки, чтобы оболочка передавала символы ^ и > в ImageMagick. Мы проверили команды в Bash на Linux. После установки эти операции с локальными файлами не требуют загрузки картинки на сервер.

Вписать в заданные границы

bash

magick "input.png" -resize "1200x1200" "fit.png"

В этом примере получится 1200 × 675. Обычный аргумент размера задаёт ограничивающую рамку, а не обещает обе точные стороны.

Заполнить квадрат и обрезать лишнее

bash

magick "input.png" -resize "1200x1200^" -gravity center -extent 1200x1200 "crop.png"

В этом примере получится 1200 × 1200. Символ ^ заставляет заполнить заданную область; следующая операция extent с выравниванием по центру обрезает её до нужного холста.

Почему перед обрезкой картинка может увеличиться

Чтобы закрыть квадрат, высота 900 пикселей должна вырасти до 1200. Коэффициент равен 1200 ÷ 900, то есть примерно 1,333. В нашем прогоне промежуточное изображение имело размер 2133 × 1200 с округлением до целых пикселей. Последующая обрезка убрала суммарно 933 пикселя по горизонтали. Даже если исходник шире цели, ему может понадобиться увеличение из-за недостаточной высоты.

Обрезка по центру не распознаёт лицо, этикетку товара или нужную тебе деталь. Если важное пропало, передвинь рамку в редакторе, возьми другой исходник или добавь поля. Увеличение числа пикселей не восстанавливает отсутствующие в оригинале детали.

Сохранить картинку целиком и добавить белый холст

bash

magick "input.png" -resize "1200x1200" -background white -gravity center -extent 1200x1200 "pad.png"

В этом примере получится 1200 × 1200. Сначала картинка вписывается до 1200 × 675, затем помещается по центру на белом фоне. Дополнительные 525 строк не делятся поровну на целые пиксели: поля различаются на одну строку.

Не увеличивать маленький исходник ради холста

Модификатор > разрешает resize уменьшать слишком большие изображения, но оставляет уже маленькие в прежнем размере. Расширение холста всё равно делает итоговый файл квадратным. В отдельном тесте картинка 600 × 338 осталась размером 600 × 338 внутри холста 1200 × 1200; поля появились со всех четырёх сторон.

Добавить поля без увеличения маленькой картинки

bash

magick "small.png" -resize "1200x1200>" -background white -gravity center -extent 1200x1200 "small-pad.png"

Подходит, если помещающееся изображение должно сохранить свои размеры в пикселях. Маленький объект не станет заполнять весь квадрат.

Не задавай две стороны ценой искажения

Символ ! в аргументе размера, например 1200x1200!, принудительно задаёт обе стороны даже с изменением пропорций. В нашем примере ширина умножилась на 0,75, а высота — примерно на 1,333. Круг стал примерно в 1,78 раза выше своей ширины. Для фотографий, логотипов и снимков экрана, где важна точная форма, используй пропорциональное масштабирование.

Проверить размеры сохранённых файлов

bash

magick identify "fit.png" "crop.png" "pad.png"

В выводе указаны размеры каждого файла. Для нашего примера ищи 1200x675 у fit.png и 1200x1200 у crop.png и pad.png. Затем обязательно посмотри сами картинки.

Короткая проверка перед загрузкой

  • Открой сохранённый файл и проверь круг, лицо или логотип на искажение.
  • Сравни с оригиналом все четыре края и текст. Не принимай обрезку только по правильным размерам.
  • Проверь требуемые размеры в пикселях, фон и формат. Число пикселей само по себе не определяет размер файла в байтах.
  • Загрузи выбранный результат и посмотри, как он выглядит на месте. Если оформление снова обрезает картинку, одной замены экспортируемого файла может оказаться мало.

Как мы проверили пример

21 октября 2026 года мы запустили ImageMagick 7.1.2-34 на Linux с оригинальными непрозрачными PNG-примерами и отключённой сетью. Проверили размеры, границы круга, крайние метки, пиксели полей и неизменность исходников; второй независимый прогон проверил опубликованные команды. Округление до целых пикселей может давать разницу в один пиксель между измеренными сторонами круга или противоположными полями.

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

Источники и материалы

Помогите улучшить руководство

← Все заметки