PIL创建缩略图错误(TypeError:“ int”对象不可下标)

时间:2019-04-07 09:40:00

标签: python python-3.x steganography

我正在编写速记代码,但是我的问题是要隐藏在另一张图像上的图像尺寸。 因为如果图像容器小于要隐藏的图像,则会返回索引不足的错误。

所以我找到了一个解决方案,那就是创建图像的缩略图,如果尺寸大于图像容器,则隐藏该图像。

这是代码(返回标题中的错误):

    global filepath,filepath2
    im_pass = PIL.Image.open(filepath)
    im_cont = PIL.Image.open(filepath2)
    width_x, height_y = im_pass.size #(x,y)
    width_x2, height_y2 = im_cont.size #(x,y)
    if width_x > width_x2 or height_y > height_y2:
        if width_x2 > height_y2:
            max_size = width_x2
            min_size = height_y2
        elif height_y2 > width_x2:
            max_size = height_y2
            min_size = width_x2
        width_x, height_y = int(min_size//1.5), int(min_size//1.5)
        im_pass.thumbnail(width_x,height_y)
  File ".\Projet_final.py", line 21, in Stega
    im_pass.thumbnail(width_x,height_y)
  File "C:\Users\Naylor\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PIL\Image.py", line 2119, in thumbnail
    if x > size[0]:

TypeError: 'int' object is not subscriptable

所以我期望的是创建缩略图并将其隐藏到容器图像中(该部分已经起作用)。

1 个答案:

答案 0 :(得分:0)

根据documentationreference),thumbnail期望在(width, height)的元组中定义大小,而不是两个单独的参数。

global filepath,filepath2
    im_pass = PIL.Image.open(filepath)
    im_cont = PIL.Image.open(filepath2)
    width_x, height_y = im_pass.size #(x,y)
    width_x2, height_y2 = im_cont.size #(x,y)
    if width_x > width_x2 or height_y > height_y2:
        if width_x2 > height_y2:
            max_size = width_x2
            min_size = height_y2
        elif height_y2 > width_x2:
            max_size = height_y2
            min_size = width_x2
        width_x, height_y = int(min_size//1.5), int(min_size//1.5)
        im_pass.thumbnail((width_x,height_y))