【问题标题】:How to properly scale an Image with PIL resize or transform on python如何在 python 上使用 PIL resize 或 transform 正确缩放图像
【发布时间】:2014-10-23 07:29:28
【问题描述】:

我想知道你们是否知道如何使用 PIL 方法正确缩放图像,我读过,我知道: im.resize(size_tuple) 但是一旦缩放,我的图像就会一直不完整,这是我的代码和结果图片,希望您能帮助我,谢谢

if image_size[0] <  120 and image_size[1] <  155:
     image = image.resize((120,155),Image.ANTIALIAS)
     image.save(f_out)

代码保存了我调整大小的图像,但它在底部显示一条黑线,图像被裁剪且不完整,任何想法如何解决这个问题?提前致谢

更新: 这是我正在使用的完整代码

def makeThumb(f_in, f_out, size=(120,155), pad=False):
    image = Image.open(f_in)
    avatar_size = (120,155)
    image_size = image.size
    method = Image.NEAREST if image_size == avatar_size else Image.ANTIALIAS

    if pad:
        thumb = image.crop( (0, 0, size[0], size[1]) )
        offset_x = max( (size[0] - image_size[0]) / 2, 0 )
        offset_y = max( (size[1] - image_size[1]) / 2, 0 )
        thumb = ImageChops.offset(thumb, offset_x, offset_y)

    else:
        if image_size[0] <  120 and image_size[1] <  155:
            image = image.resize((120,155),Image.ANTIALIAS)
            image.save(f_out)          
        else:
            thumb = ImageOps.fit(image, size, method,0.05,(0.5, 0.5))

【问题讨论】:

  • 您的图片是否包含透明度?您可以在某处发布示例吗?
  • 它对我有用。您打开图像的方式有什么奇怪的吗?是 JPEG 格式还是其他格式?
  • 这是 JPEG 文件我编辑上面的代码以显示我正在使用的所有代码

标签: python image scale python-imaging-library


【解决方案1】:

我怀疑你的 PIL 版本不好。您的代码完全可以在您的图像上运行(从您的链接下载)对我有用。即:调整大小填充没有黑条的框架。我会尝试重新安装(或尝试其他版本)您的 PIL 模块。

【讨论】:

  • 你能告诉我你用的是哪个PIL版本,我可以试试,我用的是2.6.1。
  • 我正在使用 Python 2.7(可能不相关)和 PIL 1.1.7——但 PIL 有许多编译选项,并且可能取决于它所链接的库,所以这可能无济于事你很多。
  • 只是为了澄清版本号:2.6.1 指的是pillow,1.1.7 指的是PIL。 OP 正在使用枕头(尽管这在我的机器上没有任何区别 - PIL 和枕头都按预期调整图像大小) - 怀疑底层 jpeg 库可能是原因。
猜你喜欢
  • 2011-10-31
  • 2018-05-13
  • 1970-01-01
  • 2015-11-22
  • 2014-01-20
  • 2021-10-25
  • 2016-05-02
  • 2014-03-08
  • 1970-01-01
相关资源
最近更新 更多