Я пишу простое приложение в Python, который отображает изображения. Я должен реализовать Увеличение и Уменьшение путем масштабирования изображения.
Я думаю, что метод Image.transform сможет сделать это, но я не уверен, как использовать его, так как он просит аффинную матрицу или что-то как этот :P
Вот кавычка из документов:
Я am.transform (размер, АФФИННО, данные, фильтр) => изображение
Применяет аффинное преобразование к изображению и помещает результат в новое изображение с данным размером.
Данные являются с 6 кортежами (a, b, c, d, e, f), которые содержат первые две строки от матрицы аффинного преобразования. Для каждого пикселя (x, y) в выходном изображении, новое значение принято от положения (x + b y + c, d x + e y + f) во входном изображении, округленном к ближайшему пикселю.
Эта функция может использоваться, чтобы масштабировать, перевести, повернуть, и сдвинуть исходное изображение.
Вам было бы намного лучше использовать EXTENT
, а не AFFINE
] метод. Вам нужно только рассчитать две вещи: какую часть ввода вы хотите видеть и насколько она должна быть большой. Например, если вы хотите увидеть все изображение, уменьшенное до половинного размера (т. Е. Уменьшение на 2), вы должны передать данные (0, 0, im.size [0], im.size [1]) и размер (im.size [0] / 2, im.size [1] / 2).
Применяется аффинное преобразование, за которым следует линейное преобразование. Но вам нужно изменить размер только части изображения, используя метод изменения размера. В следующем SO-ответе есть пример кода: