Skip to content

Commit

Permalink
Image sequence thing done
Browse files Browse the repository at this point in the history
  • Loading branch information
UncertainProd committed Sep 15, 2021
1 parent abce433 commit a2798ae
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
14 changes: 13 additions & 1 deletion src/xmlpngUI.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def __init__(self):

self.ui.generatexml_btn.clicked.connect(self.generate_xml)
self.ui.actionExport_as_Spritesheet_and_XML.triggered.connect(self.generate_xml)
# self.ui.actionExport_induvidual_images.triggered.connect()
self.ui.actionExport_induvidual_images.triggered.connect(self.export_bunch_of_imgs)
self.ui.frames_area.setWidgetResizable(True)
self.frames_layout = QGridLayout(self.ui.sprite_frame_content)
self.ui.frames_area.setWidget(self.ui.sprite_frame_content)
Expand Down Expand Up @@ -264,6 +264,18 @@ def re_render_grid(self):
self.frames_layout.removeWidget(self.add_img_button)
self.frames_layout.addWidget(self.add_img_button, self.num_labels // self.num_cols, self.num_labels % self.num_cols, Qt.AlignmentFlag(0x1|0x20))

def export_bunch_of_imgs(self):
savedir = QFileDialog.getExistingDirectory(caption="Save image sequence to...")
updatefn, progbar = display_progress_bar(self, "Exporting Image Sequence", startlim=0, endlim=len(self.labels))
QApplication.processEvents()

errmsg = xmlpngengine.save_img_sequence(self.labels, savedir, updatefn, self.settings_widget.isclip != 0)
progbar.close()
if errmsg:
self.display_msg_box("Error!", text=f"An error occured: {errmsg}", icon=QMessageBox.Critical)
else:
self.display_msg_box("Success!", text="Image sequence saved successfully!", icon=QMessageBox.Information)

def generate_xml(self):
charname = self.ui.charname_textbox.text()
charname = charname.strip()
Expand Down
20 changes: 19 additions & 1 deletion src/xmlpngengine.py
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,24 @@ def appendIconToIconGrid(icongrid_path, iconpaths, iconsize=150): # savedir,
icongrid.close()
return retval, indices, problem_img, exception_msg

def save_img_sequence(frames, savedir, updatefn, clip):
newposes = add_pose_numbers(frames)
for i, (frame, pose) in enumerate(zip(frames, newposes)):
try:
if frame.from_single_png:
im = Image.open(frame.imgpath).convert('RGBA')
else:
im = Image.open(frame.imgpath).convert('RGBA').crop((frame.tex_x, frame.tex_y, frame.tex_x + frame.tex_w, frame.tex_y + frame.tex_h))

if clip:
im = im.crop(im.getbbox())
im.save(path.join(savedir, f"{pose}.png"))
im.close()
updatefn(i+1, f"{pose}.png")
except Exception as e:
return str(e)
return None

def split_spsh(pngpath, xmlpath, udpdatefn):
spritesheet = Image.open(pngpath)
try:
Expand All @@ -425,7 +443,7 @@ def split_spsh(pngpath, xmlpath, udpdatefn):
cleaned_xml += ch

xmltree = ET.fromstring(cleaned_xml) # ET.parse(xmlpath)
print(xmltree)
print("XML cleaned")
except ET.ParseError as e:
print("Error!", str(e))
return []
Expand Down

0 comments on commit a2798ae

Please sign in to comment.