python - 使用 PIL.resize 调整 JPG 大小会得到全黑图像

标签 python python-3.x ubuntu python-imaging-library

我正在使用 PIL 来调整 JPG 的大小。我期待相同的图像,调整大小作为输出,但我得到了一个正确大小的黑框。新的图像文件完全没有任何信息,只是一个空文件。这是我的脚本的摘录:

basewidth = 300
img = Image.open(path_to_image)
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize))
img.save(dir + "/the_image.jpg")

我尝试使用 Image.LANCZOS 作为第二个参数来调整大小(默认为 Image.NEAREST,带 1 个参数),但没有产生任何影响。我在 Ubunutu 16.04 上运行 Python3。关于为什么图像文件为空的任何想法?

最佳答案

在尝试调整透明背景图像的大小时,我也遇到了同样的问题。在我向图像添加白色背景后,“调整大小”就起作用了。

添加白色背景然后调整图像大小的代码:

from PIL import Image

im = Image.open("path/to/img")

if im.mode == 'RGBA':
    alpha = im.split()[3]
    bgmask = alpha.point(lambda x: 255-x)
    im = im.convert('RGB')
    im.paste((255,255,255), None, bgmask)

im = im.resize((new_width, new_height), Image.ANTIALIAS)

引用:

  1. Other's code for making thumbnail

  2. Python: Image resizing: keep proportion - add white background

关于python - 使用 PIL.resize 调整 JPG 大小会得到全黑图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57052293/

相关文章:

python - 自定义错误消息在 Django ModelForm 中不起作用

python - 如何调用方法名称为字符串的方法

python - 是什么导致通过元类包装的方法在调用时忘记 self ?

c - 如何使用套接字将数据从 python 发送到 C (unix)

python - 找出总和为最小值的那个

php - Ubuntu 10.4 上的 APC 配置。 apc.shm_size、apc.shm_segments 和 Apache 的问题

node.js - 如何保护基于 Node JS(在 Ubuntu 上运行)和 MongoDB 构建的网站/服务器?

用于多个点和单个点的 Python 正则表达式

python-3.x - Pymodbus读取并解码寄存器值

android - 无法在 Ubuntu 中执行 adb。下载的文件适用于 x86-64,而我有 i686