#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)). Успех!