PIL создает ошибку миниатюры (TypeError: объект 'int' не подлежит подписке)

Я кодирую стенографический код, но моя проблема заключается в размере изображения, которое я хочу скрыть на другом изображении. Потому что, если контейнер изображения меньше, чем изображение, которое нужно скрыть, это возвращает ошибку вне индекса.

Итак, я нахожу решение: создать миниатюру изображения, чтобы скрыть, если размер больше, чем контейнер изображения.

Вот код (верните ошибку в заголовке):

    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

Итак, я ожидаю создать миниатюру и скрыть ее в изображении контейнера (эта часть уже работает).

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
950
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно документация (ссылка), 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))

@Rzdhop Случается с лучшими из нас, и я бы хотел, чтобы это была шутка, хех ^^

Torxed 07.04.2019 12:57

Другие вопросы по теме