def on_import_image(self, widget): """Load an image file into Pynt (replaces current image) Currently must be a palette based file (e.g. GIF or palette PNG)""" filedir, filename = os.path.split(self.save_file) load_file = file_browse(gtk.FILE_CHOOSER_ACTION_OPEN, file_dir=filedir, file_name="", file_ext="png") if load_file != "": img = Image.open(load_file) if img.mode != "P": # Convert to "optimal" 256 color palette img = img.convert("P", palette=Image.ADAPTIVE, colors=256) lut = img.resize((256, 1)) lut.putdata(range(256)) lut = list(lut.convert("RGB").getdata()) print "Image size:", img.size stack = PyntStack(resolution=img.size, data = img) stack.set_palette(lut) stack.palette.set_colors(lut) #self.paletteview.palette = self.pe_paletteview.palette = self.stack.palette #self.paletteview.invalidate_all() #self.pe_paletteview.invalidate_all() #self.paper.stack = self.stack #self.paper.invalidate() self.stacks.append(stack) self.switch_stack(stack)
def on_load_session(self, widget): filedir, filename = os.path.split(self.save_file) load_file = file_browse(gtk.FILE_CHOOSER_ACTION_OPEN, file_dir=filedir, file_name=filename, file_ext="pynt") if load_file != "": f = open(load_file, "r") self.save_file = load_file pyntdata = cPickle.load(f) self.stacks = [] while self.page_notebook.get_n_pages() > 0: self.page_notebook.remove_page(-1) for s in pyntdata: self.add_image(stack=PyntStack(data=s)) #self.stacks.append(PyntStack(data=s)) #self.stacks = [PyntStack(data=stackdata) for stackdata in pyntdata] self.stack = self.stacks[0] f.close() self.paletteview.palette = self.pe_paletteview.palette = \ self.stack.palette self.paletteview.invalidate_all() self.pe_paletteview.invalidate_all() self.paper.stack = self.stack self.paper.invalidate() self.update_page_label() self.update_frame_label() self.update_layer_label() self.update_window_title()
def on_save_session_as(self, widget): """Save current session as a Pynt file (pickled python object)""" filedir, filename = os.path.split(self.save_file) save_file = file_browse(gtk.FILE_CHOOSER_ACTION_SAVE, file_dir=filedir, file_name=filename, file_ext="pynt") if save_file != "": self.save_file = self.save_session(save_file) self.update_window_title()
def on_save_image_as(self, widget): """Save current image as a Pynt file (pickled python object)""" filedir, filename = os.path.split(self.save_file) save_file = file_browse(gtk.FILE_CHOOSER_ACTION_SAVE, file_dir=filedir, file_name=filename, file_ext="pynt") if save_file != "": if not save_file.endswith(".pynt"): save_file += ".pynt" pyntdata = PyntData(self.stack) pyntdata.save(save_file) self.save_file = save_file self.update_window_title()
def on_export_image(self, widget): """Export image as a palette based PNG (layers are merged in the image). """ filedir, filename = os.path.split(self.save_file) filename = os.path.splitext(filename)[0] + ".png" save_file = file_browse(gtk.FILE_CHOOSER_ACTION_SAVE, file_dir=filedir, file_name=filename, file_ext="png") if save_file != "": path, extension = os.path.splitext(save_file) if extension == "": save_file = path + ".png" img = self.stack.get_area(*((0, 0) + self.stack.resolution)) img.save(save_file, "PNG")
def on_export_brush(self, widget): """Export image as a palette based PNG (layers are merged in the image)""" filedir, filename = os.path.split(self.brush_file) filename = os.path.splitext(filename)[0] + ".png" brush_file = file_browse(gtk.FILE_CHOOSER_ACTION_SAVE, file_dir=filedir, file_name=filename, file_ext="png") if brush_file != "": path, extension = os.path.splitext(brush_file) if extension == "": brush_file = path + ".png" #img = self.stack.get_area(*((0, 0) + self.stack.resolution)) img = self.paper.brush.data #.convert("RGB") img.save(brush_file, "PNG", transparency=0) self.brush_file = brush_file
def on_load_image(self, widget): """Load a Pynt image file""" filedir, filename = os.path.split(self.save_file) load_file = file_browse(gtk.FILE_CHOOSER_ACTION_OPEN, file_dir=filedir, file_name=filename, file_ext="pynt") if load_file != "": f = open(load_file, "r") self.save_file = load_file pyntdata = cPickle.load(f) self.stack = PyntStack(data=pyntdata) self.paletteview.palette = self.pe_paletteview.palette = \ self.stack.palette self.paletteview.invalidate_all() self.pe_paletteview.invalidate_all() self.paper.stack = self.stack self.scrolledwindow.remove(self.paper) self.paper = PyntPaper(self.stack) print "done" #self.image_notebook = self.mainTree.get_widget("image_notebook") self.scrolledwindow.add(self.paper) self.paper.connect("fgcolor-picked", self.set_fgcolor) self.paper.connect("bgcolor-picked", self.set_bgcolor) self.paper.connect("coords-changed", self.set_coords) self.paper.connect("set-tool", lambda w, t: self.set_tool(t)) #self.set_width(1) self.paper.show() #self.paper.invalidate() self.update_frame_label() self.update_layer_label() self.update_window_title() f.close()