我无法让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)))
答案 0 :(得分:17)
对于阅读本文的人来说,遇到同样的问题 - 在另一台机器上试试。我得到了两个
im = im.resize(size_tuple)
和
im = im.transform(size_tuple, Image.EXTENT, (x1,y1,x2,y2)
正确调整文件大小。我的服务器上的python安装一定有问题。在我的本地机器上工作正常。
答案 1 :(得分:2)
这是一个如何使用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)。
答案 2 :(得分:0)
增加图像比缩小图像要复杂得多。缩小图像涉及获取现有像素并消除其中一些像素。照片放大需要使现有像素代表不存在的附加像素,以使图像看起来更大。我发现很少有可以做到这一点的软件产品。据报道,真正的Fractiles能够,并且我已经找到了一种名为Imagener的产品。