Методы обрезки изображения и центрирования в Linux: командная строка и программные решения

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

Метод 1: использование ImageMagick (командная строка)
ImageMagick — мощный инструмент командной строки для манипулирования изображениями. Чтобы обрезать и центрировать изображение с помощью ImageMagick, вы можете использовать следующую команду:

convert input.jpg -gravity center -crop 80%x80%+0+0 output.jpg

Эта команда обрезает изображение до 80 % от исходного размера и центрирует его. Полученное изображение сохраняется как выходной файл.jpg.

Метод 2: использование Python с библиотекой PIL/Pillow
Python предоставляет несколько библиотек обработки изображений, таких как PIL (библиотека изображений Python) или ее ответвление Pillow. Вот пример использования Pillow:

from PIL import Image
def crop_and_center_image(image_path, output_path, crop_percentage):
    img = Image.open(image_path)
    width, height = img.size
    crop_width = int(width * crop_percentage)
    crop_height = int(height * crop_percentage)
    left = (width - crop_width) // 2
    top = (height - crop_height) // 2
    right = left + crop_width
    bottom = top + crop_height
    cropped_img = img.crop((left, top, right, bottom))
    cropped_img.save(output_path)
# Usage
crop_and_center_image('input.jpg', 'output.jpg', 0.8)

Этот код Python загружает входное изображение, вычисляет размеры обрезки на основе указанного процента обрезки, обрезает изображение и сохраняет выходное изображение.

Метод 3: использование OpenCV с Python
OpenCV — это популярная библиотека компьютерного зрения, предоставляющая возможности обработки изображений. Вот пример использования OpenCV с Python:

import cv2
def crop_and_center_image(image_path, output_path, crop_percentage):
    img = cv2.imread(image_path)
    height, width, _ = img.shape
    crop_width = int(width * crop_percentage)
    crop_height = int(height * crop_percentage)
    left = (width - crop_width) // 2
    top = (height - crop_height) // 2
    right = left + crop_width
    bottom = top + crop_height
    cropped_img = img[top:bottom, left:right]
    cv2.imwrite(output_path, cropped_img)
# Usage
crop_and_center_image('input.jpg', 'output.jpg', 0.8)

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