def parse_args(): try: parser = argparse.ArgumentParser() parser.add_argument("-f", required=True, help="path to gif file") parser.add_argument("-r", action='store_const', const=True, help="random palette") parser.add_argument("-d", action='store_const', const=True, help="show only hexdump") parser.add_argument("-i", action='store_const', const=True, help="show only information about file") args = parser.parse_args() file_path = args.f if args.d: gif_obj = gifparser.get_gif_obj_from_file(file_path) hexdump = utils.get_only_hexdump(gif_obj) print(hexdump + '\n') if args.i: gif_obj = gifparser.get_gif_obj_from_file(file_path) info = utils.get_full_info(gif_obj) print(info + '\n') else: if args.r: gui.run_prog_with_random_palette(file_path) else: gui.run_prog(file_path) except FileNotFoundError: print("No such file or directory.")
def open_file(self, new_filename): current_dir = os.getcwd() current_path = os.path.join(current_dir, new_filename) if os.path.exists(current_path): self.gif_obj = gifparser.get_gif_obj_from_file(new_filename) self.filename = new_filename self.draw_mainwindow() else: self.display_error(OPEN_FILE_ERROR_TEXT, self.get_new_filename)
def setUp(self): self.filename = 'images/loading.gif' self.gif_obj = gifparser.get_gif_obj_from_file(self.filename) with open(self.filename, 'rb') as gif_file: self.filebytes = gif_file.read() self.g_parser = gifparser.GifParser(self.filebytes) self.exp_ls_descriptor_bytes = \ b'\x47\x49\x46\x38\x39\x61\x80\x00\x80\x00\xC6\x00\x00' # !! читать из файла: self.exp_gct_bytes = \ b'\x04\x02\x04\x84\x82\x84\x44\x42\x44\xC4\xC2\xC4\x24' \ b'\x22\x24\xA4\xA2\xA4\x64\x62\x64\xE4\xE2\xE4\x14\x12' \ b'\x14\x94\x92\x94\x54\x52\x54\xD4\xD2\xD4\x34\x32\x34' \ b'\xB4\xB2\xB4\x74\x72\x74\xF4\xF2\xF4\x0C\x0A\x0C\x8C' \ b'\x8A\x8C\x4C\x4A\x4C\xCC\xCA\xCC\x2C\x2A\x2C\xAC\xAA' \ b'\xAC\x6C\x6A\x6C\xEC\xEA\xEC\x1C\x1A\x1C\x9C\x9A\x9C' \ b'\x5C\x5A\x5C\xDC\xDA\xDC\x3C\x3A\x3C\xBC\xBA\xBC\x7C' \ b'\x7A\x7C\xFC\xFA\xFC\x04\x06\x04\x84\x86\x84\x44\x46' \ b'\x44\xC4\xC6\xC4\x24\x26\x24\xA4\xA6\xA4\x64\x66\x64' \ b'\xE4\xE6\xE4\x14\x16\x14\x94\x96\x94\x54\x56\x54\xD4' \ b'\xD6\xD4\x34\x36\x34\xB4\xB6\xB4\x74\x76\x74\xF4\xF6' \ b'\xF4\x0C\x0E\x0C\x8C\x8E\x8C\x4C\x4E\x4C\xCC\xCE\xCC' \ b'\x2C\x2E\x2C\xAC\xAE\xAC\x6C\x6E\x6C\xEC\xEE\xEC\x1C' \ b'\x1E\x1C\x9C\x9E\x9C\x5C\x5E\x5C\xDC\xDE\xDC\x3C\x3E' \ b'\x3C\xBC\xBE\xBC\x7C\x7E\x7C\xFC\xFE\xFC\xFF\xFF\xFF' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \ b'\x00\x00\x00\x00\x00\x00\x00' self.netscape_block = \ b'\x21\xFF\x0B\x4E\x45\x54\x53\x43\x41\x50\x45\x32\x2E' \ b'\x30\x03\x01\x00\x00\x00' self.gc_extension_1 = \ b'\x21\xF9\x04\x09\x06\x00\x40\x00' self.img_descriptor_1 = \ b'\x2C\x00\x00\x00\x00\x80\x00\x80\x00\x00' self.image_block_1 = b'' self.gct_size = 384
def run_prog(file_path): filename = get_filaname(file_path) gif_obj = gifparser.get_gif_obj_from_file(filename) dr = GUI(gif_obj, filename) dr.draw_mainwindow()
def display_correct_palette(self): self.gif_obj = gifparser.get_gif_obj_from_file(self.filename) self.display_gif() self.display_palette()