我想在枕头 python 中调整图像大小,但是我有两个功能可供选择:

Image.resize http://pillow.readthedocs.org/en/latest/reference/Image.html#PIL.Image.Image.resize

Image.thumbnail http://pillow.readthedocs.org/en/latest/reference/Image.html#PIL.Image.Image.thumbnail

两个定义都指出要调整图像大小,我应该使用哪一个?

#1楼 票数:67

Image.resize调整到您指定的尺寸:

Image.resize([256,512],PIL.Image.ANTIALIAS) # resizes to 256x512 exactly

Image.thumbnail调整为最大尺寸,(a) 保留纵横比,(b) 不超过原始图像,(c) 不超过thumbnail参数中指定的大小。

Image.thumbnail([256, 512],PIL.Image.ANTIALIAS) # resizes 512x512 to 256x256

此外,调用thumbnail会在适当的位置resize其大小,而resize返回调整后的图像。

#2楼 票数:1

两个缩略图示例,其中一个来自geeksforgeeks:

# importing Image class from PIL package  
from PIL import Image 
   
# creating a object  
image = Image.open(r"C:\Users\System-Pc\Desktop\python.png") 
MAX_SIZE = (100, 100) 
  
image.thumbnail(MAX_SIZE) 
  
# creating thumbnail 
image.save('pythonthumb.png') 
image.show()

第二个示例与 Python/Django 相关。 如果你在 django model.py 上这样做,你修改def save(self,*args, **kwargs)方法 - 像这样:

class Profile(models.Model):                                                                                                                                                                                                                               
    user=models.OneToOneField(User, on_delete=models.CASCADE)                                                                                                                                                                                              
    image=models.ImageField(default='default.jpg', upload_to='img_profile')                                                                                                                                                                                                                                                                                                                                                                                   
    def __str__(self):                                                                                                                                                                                                                                     
        return '{} Profile'.format(self.user.email)                                                                                                                                                                                                    
    # Resize the uploaded image                                                                                                                                                                                                                            
    def save(self, *args, **kwargs):                                                                                                                                                                                                                       
        super().save(*args, **kwargs)                                                                                                                                                                                                                      
        img=Image.open(self.image.path)                                                                                                                                                                                                                    
        if img.height > 100 or img.width >100:                                                                                                                                                                                                             
            Max_size=(100,100)                                                                                                                                                                                                                             
            img.thumbnail(Max_size)                                                                                                                                                                                                                        
            img.save(self.image.path)                                                                                                                                                                                                                      
        else:                                                                                                                                                                                                                                              
            del img

在最后一个示例中,两个图像都存储在服务器上的文件系统中。

  ask by wolfgang translate from so

未解决问题?本站智能推荐:

3回复

为什么在Pillow-python中调整图像大小会删除Image.format?

我正在使用Pillow在python中调整图像大小 为什么resized_image.format保持None值? 如何在使用枕头调整大小时保留格式?
2回复

如何在存储到磁盘之前使用Pillow-python获取KB大小的图像大小?

我正在使用Pillow在Python中进行图像处理, 知道如何使用Pillow获取此图像文件的大小? 我想在将图像存储到磁盘之前处理图像的大小
1回复

第三元组值在Pillow.Image.tile中代表什么?

有人可以告诉我,通过打印Pillow.Image.tile属性生成的以下输出中106代表什么?
17回复

为什么Python不能从PIL导入Image?

我试图运行的单行如下: 无论这看起来多么简单,它都会产生一个错误: 如果有帮助,我在运行此之前(在此之前)从https://pypi.python.org/pypi/Pillow/2.6.1 (文件Pillow-2.6.1.win-amd64-py3.4.exe )安装了枕头已经有一些PIL安装,我
1回复

PIL/Pillow2.8.1和3.1.1上Image.rotate的差异

我在PIL上使用Image.rotate()时间很糟糕,直到我决定检查终端发生了什么。 这就是我做的: Python 2,Pillow(2.8.1) 输出(如预期): Python 3,Pillow(3.1.1) 输出: 而且我认为这是在Pillow 3X中调用旋转的正确方
2回复

Image.open()无法识别python脚本文件中的图像文件

我正在尝试执行此脚本 当我在python shell中运行它时工作正常 但是当我把它放在一些test.py文件中并像python test.py那样运行时,我收到了这个错误 请帮我解决这个问题,谢谢 PS:早些时候我从Imaging-1.1.7 setup.py安装了PIL,后来
2回复

如何关闭Pillow中打开的图像?

我有一个导入Pillow库的python文件。 我可以打开图像 但是如何关闭该图像呢? 我没有使用Pillow来编辑图像,只是为了显示图像并允许用户选择保存或删除它。
1回复

实际使用元组时,PIL.Image.paste中的元组错误

这个错误有点棘手,因为我正在使用的代码在其他系统上运行都没有问题。 我今天将这些库安装在一台新机器上,并在尝试运行我的代码时遇到错误(该代码可在其他OSX 10.9计算机上运行)。 它引用的代码如下 proof.size是一个PIL.Image对象,如下所示: 在这种情况下,我的错