Измените размер изображений до очень маленьких размеров n x n

Я изменяю размер своих изображений до 50 x 50 в python. Преобразование Skimage и миниатюра PIL изменяют размер изображения при сохранении соотношения сторон. Какой другой способ сделать это? Я пробовал: для эскиза PIL,

im.thumbnail((50,50),Image.ANTIALIAS)

Это дает мне изображение (42,50), а не изображение (50,50).

Для skimage.transform

image = skimage.transform.resize(image, (50, 50))

Он возвращает полностью искаженное изображение.


person yyy    schedule 10.08.2016    source источник
comment
какой у вас размер оригинала?   -  person Julien    schedule 10.08.2016
comment
Если вам не нужны искаженные пропорции, масштабируйте по самой короткой стороне и обрезайте после   -  person Sami Kuhmonen    schedule 10.08.2016
comment
Исходный размер изображений варьируется от (400, 800) до (20,30). Я пытался масштабировать и обрезать, но это также приводит к искаженному или полностью черному изображению.   -  person yyy    schedule 10.08.2016
comment
Каково желаемое поведение, если оригинал не квадратный? Должен ли он растягиваться, добавлять белые или черные полосы по краям или обрезать?   -  person physicalattraction    schedule 10.08.2016
comment
обрезать, если изображение не квадратное. Я попробовал другой метод: сначала изменить размер, сохранив диапазон, а затем центральную обрезку. Но результат все равно искажен.   -  person yyy    schedule 10.08.2016


Ответы (2)


Используйте 1_

person homm    schedule 09.10.2016

Чтобы изменить размер до фиксированного размера с сохранением соотношения сторон и кадрированием по размеру, используйте PIL.ImageOps.fit(image,size)

import PIL.ImageOps
import PIL.Image
impath = '1-True Mountain Covered with Cloud.jpg'
im = PIL.Image.open(impath)
display(im)

оригинал

imfit = PIL.ImageOps.fit(im, (64,64))
display(imfit)

подходит

person PaloDravecky    schedule 19.03.2019