2016-12-06 8 views
0

у меня есть spritesheet с спрайтов 40x30 каждого, и я пытаюсь разбить его на indivdual спрайтов по имени из 0-number_of_spritesПодушка: расщеплении spritesheet в seprate изображений

from PIL import Image 
from os import mkdir 

mkdir("assets/icons") 
sheet = Image.open("assets/icons.png") 
count = 0 

for x in range(12): 
    for y in range(97): 
     a = (x + 1) * 40 
     b = (y + 1) * 30 
     icon = sheet.crop((a - 40, b - 30, a, b)) # Problem here 
     icon.save("assets/icons/{}.png".format(count)) 
     count += 1 

И проблема в том, где я отметил как таковой. Координаты a, b являются верхний левый и верхний правый каждого спрайта, переходя от 40, 30 к 480, 2910

EDIT: Введена в котором проблема была, случайно удалили его раньше. Моя проблема заключается в том, что этот код получает каждый отдельный спрайт, но, похоже, делает это в совершенно случайном порядке, например, # 384 в списке, по какой-то причине был сохранен как # 32, а # 10 как # 1

+0

Где вы отметили проблему. Пожалуйста, отредактируйте свой вопрос и сделайте это (и добавление объяснения проблемы будет еще лучше). – martineau

ответ

0

Проблема заключается в том, что вы обрезаете столбец спрайта по столбцу вместо строки за строкой. Это означает, что первый спрайт во второй строке обрезается вторым, а не тринадцатым. Bulbasaur на самом деле 98-й спрайт, который вы урожаете. Вы должны изменить порядок ваших for петель:

for y in range(97): 
    for x in range(12): 
     ... 

Я предлагаю вам установить count к 1, таким образом, ваш первый значок будет номером 1 вместо 0. Вы также можете использовать что-то вроде str(count).zfill(4) так, чтобы ваши значки правильно отсортированы в вашем файловом менеджере. Всего две маленькие нитпики.

+0

Спасибо большое! это действительно проблема, как сидение, я использую? значок, и я хочу, чтобы pokemon (по большей части, формы не работал), чтобы быть labeld национальным dex #, поэтому я не начинаю с 1. Также для меня (thunar on linux) сортировка по # works по умолчанию –

+0

Достаточно справедливо. Возможно, будет хорошей идеей заполнить номер, если вам нужно перечислить содержимое вашей папки с помощью Python и, например, получить значки в порядке, но это зависит от ваших потребностей. – fenceop

 Смежные вопросы

  • Нет связанных вопросов^_^