【问题标题】:resize images in python在python中调整图像大小
【发布时间】:2012-04-09 18:25:51
【问题描述】:

我可以在 python 中调整图像的大小到给定的高度和宽度吗,我使用 python 2.5,我尝试了本教程http://effbot.org/imagingbook/introduction.htm,我为图像安装了 PIL 库,但是当我尝试编写时:

import Image
im = Image.open("test.jpg")

我从 import:open 得到未定义的变量 虽然import Image没有给出错误? 提前致谢。

【问题讨论】:

    标签: image resize python-2.5


    【解决方案1】:

    您的导入似乎是问题所在。使用它而不是“导入图像”:

    from PIL import Image
    

    然后这样继续:

    image = Image.open('/example/path/to/image/file.jpg/')
    image.thumbnail((80, 80), Image.ANTIALIAS)
    image.save('/some/path/thumb.jpg', 'JPEG', quality=88)
    

    【讨论】:

    • 我对此感到非常惊讶,因为即使在 PIL 网站上,even the tutorials 也表明仅使用 import Image 应该可以工作。这是更新的 PIL 版本吗?我使用 PIL 一年多了,只用import Image 导入过它,从来没有遇到过问题......
    • @EMS:问题可能出在python的版本上,你用的是哪个版本?我用的是2.5版本
    • 我使用的是 2.6 和 2.7。我不认为这是 Python 版本,除非您使用的是旧版本的 PIL。你的 PIL 版本是多少,我的是 1.1.7。
    • 确实很奇怪。可能这取决于 PIL 的安装方式。就我而言,我需要这种类型的导入。
    • 将 Python 2.7 与 PIL 1.1.7 一起使用
    【解决方案2】:

    它可能对谁有用:刚刚在official Pillow website 上找到了它。您可能使用了 Pillow 而不是 PIL。

    警告

    Pillow >= 1.0 不再支持“导入图片”。请使用“来自 PIL 导入图片”。

    【讨论】:

      【解决方案3】:

      此脚本调整给定文件夹中所有图像的大小:

      import PIL
      from PIL import Image
      import os, sys
      path = "path"
      dirs = os.listdir( path )
      def resize():
          for item in dirs:
              if os.path.isfile(path+item):
                  img = Image.open(path+item)
                  f, e = os.path.splitext(path+item)
                  img = img.resize((width,hight ), Image.ANTIALIAS)
                  img.save(f + '.jpg') 
      resize()
      

      【讨论】:

        【解决方案4】:
        import os
        from PIL import Image
        
        imagePath = os.getcwd() + 'childFolder/myImage.png'
        newPath = os.getcwd() + 'childFolder/newImage.png'
        cropSize = 150, 150
        
        img = Image.open(imagePath)
        img.thumbnail(cropSize, Image.ANTIALIAS)
        img.save(newPath)
        

        【讨论】:

          【解决方案5】:

          如果您在使用 PIL 时遇到问题,另一种选择可能是 scipy.misc 库。假设您要调整大小为 48x48,并且您的图像与脚本位于同一目录中

          from from scipy.misc import imread
          from scipy.misc import imresize
          

          然后:

          img = imread('./image_that_i_want_to_resize.jpg')
          img_resized = imresize(img, [48, 48])
          

          【讨论】:

          • 请注意,在 scipy.org 上它说 imread 已弃用! imread 在 SciPy 1.0.0 中已弃用,并将在 1.2.0 中删除。请改用 imageio.imread。
          【解决方案6】:
          • 您可以使用skimage调整图片大小

            from skimage.transform import resize
            import matplotlib.pyplot as plt
            
            img=plt.imread('Sunflowers.jpg')
            image_resized =resize(img, (244, 244))
            
          • 绘制调整大小的图像

            plt.subplot(1,2,1)
            plt.imshow(img)
            plt.title('original image')
            
            plt.subplot(1,2,2)
            plt.imshow(image_resized)
            plt.title('image_resized')
            

          【讨论】:

          • 这并不能真正回答问题。它提出了另一种方法。它可能有用,是的,但不是直接的答案。
          猜你喜欢
          • 2016-08-25
          • 2018-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-17
          • 1970-01-01
          相关资源
          最近更新 更多