Слайсер изображений не работает после первого среза — подушка

#python #image #split #python-imaging-library #slice

#python #изображение #разделить #python-imaging-library #срез

Вопрос:

Итак, я работаю над своим самым первым неигровым проектом, и моя цель — создать базовый срез изображения. Идея в том, что я хочу взять изображение, получить вводимые пользователем данные для размера среза, а затем разбить изображение на нужное количество срезов. В настоящее время мой код создает правильное количество срезов, и первый срез кажется правильным, но все остальные срезы представляют собой либо пустые изображения, либо полные альфа-изображения.

Вот мой код:

 import sys
from PIL import Image, ImageDraw
 

im = Image.open("48x48.png")

print('Enter your desired tile size in pixels (Example: 16 will be a 16x16 tile):')
tilesize = input()
tilesize = int(tilesize)

rows = im.size[0] / tilesize
cols = im.size[1] / tilesize

ir = 0
ic = 0
while ir != rows:
    while ic != cols:
        box = (0   ic * tilesize, 0   ir * tilesize, tilesize   ic * tilesize, tilesize   ir * tilesize)
        region = im.crop(box)
        slice = Image.new('RGBA', (tilesize, tilesize), color=255)
        mask=Image.new('L', slice.size, color=255)
        draw=ImageDraw.Draw(mask)
        draw.rectangle((0,0,tilesize,tilesize), fill=0)
        slice.putalpha(mask)
        slice.paste(region, box)
        outfile = "r"   str(ir 1)   "c"   str(ic 1)   ".png"
        slice.save(outfile)
        ic  = 1
    ir  =1
    ic = 0
  

Кстати, я использую для этого библиотеку Pillow. Кто-нибудь может помочь мне понять, что я делаю не так? Спасибо!

Ответ №1:

Получил некоторую помощь на другом форуме. Мне пришлось заменить slice.paste(region, box) на slice.paste(region, (0,0)). Успех!