PIL: увеличить изображение - PullRequest
7 голосов
/ 09 марта 2011

У меня проблемы с получением PIL для увеличения изображения. Большие изображения уменьшаются очень хорошо, но маленькие изображения не увеличиваются.

# get the ratio of the change in height of this image using the
# by dividing the height of the first image
s = h / float(image.size[1])
# calculate the change in dimension of the new image
new_size = tuple([int(x*s) for x in image.size])
# if this image height is larger than the image we are sizing to
if image.size[1] > h: 
    # make a thumbnail of the image using the new image size
    image.thumbnail(new_size)
    by = "thumbnailed"
    # add the image to the images list
    new_images.append(image)
else:
    # otherwise try to blow up the image - doesn't work
    new_image = image.resize(new_size)
    new_images.append(new_image)
    by = "resized"
logging.debug("image %s from: %s to %s" % (by, str(image.size), str(new_size)))

Ответы [ 3 ]

17 голосов
/ 10 марта 2011

Для тех, кто читает это, имеет такую ​​же проблему - попробуйте на другой машине.У меня есть

im = im.resize(size_tuple)

и

im = im.transform(size_tuple, Image.EXTENT, (x1,y1,x2,y2)

для правильного изменения размера файлов.Должно быть что-то не так с установкой python на моем сервере.Хорошо работал на моей локальной машине.

2 голосов
/ 22 апреля 2014

Вот рабочий пример того, как изменить размер изображения в каждом направлении с помощью openCV и numpy:

import cv2, numpy

original_image = cv2.imread('original_image.jpg',0)
original_height, original_width = original_image.shape[:2]
factor = 2
resized_image = cv2.resize(original_image, (int(original_height*factor), int(original_width*factor)), interpolation=cv2.INTER_CUBIC )

cv2.imwrite('resized_image.jpg',resized_image)
#fixed var name

Просто так.Вы хотите использовать "cv2.INTER_CUBIC" для увеличения (фактор> 1) и "cv2.INTER_AREA", чтобы сделать изображения меньше (фактор <1). </p>

0 голосов
/ 28 февраля 2015

Увеличение изображений намного сложнее, чем их уменьшение. Уменьшение изображения включает в себя использование существующих пикселей и устранение некоторых из них. Для увеличения фотографии требуется, чтобы существующие пиксели представляли собой дополнительные пиксели, которых не существует, чтобы изображение выглядело больше. Я нашел несколько программных продуктов, которые могут сделать это. Подлинные Fractiles, как сообщается, смогли, и я нашел продукт под названием Imagener, который может.

...