diff --git a/image_util.py b/image_util.py index 16dbc38..38bd689 100644 --- a/image_util.py +++ b/image_util.py @@ -1,4 +1,4 @@ -from io import StringIO +from io import BytesIO import io import base64 import colorsys @@ -43,7 +43,7 @@ def image_to_binary(image, crush=False): if output == 1: print("failed to crush") s=bson.binary.Binary(open(outfile).read()) - print(time.time()-t_time) + print((time.time()-t_time)) return s else: output = StringIO.StringIO() @@ -69,7 +69,7 @@ def load_image(image_data): image = Image.open(io.BytesIO(byte_data)) except: byte_data = image_data - image = Image.open(io.BytesIO(byte_data)) + image = Image.open(io.BytesIO(base64.b64decode(byte_data, validate=True))) image = image.convert("RGBA") return image @@ -87,9 +87,9 @@ def image_to_bmp_string(img): return base64.b64encode(string) def image_to_string_format(img,format_type, conv="RGB"): - output = StringIO.StringIO() + output = BytesIO() img.convert(conv).save(output, format=format_type) - string = output.getvalue() + string = output.getbuffer() return base64.b64encode(string) def color_byte_to_hex(byte_color): @@ -147,7 +147,7 @@ def rectify_sub(image): # _ # | curr_pixel = BLACK - for i in reversed(range(w)): + for i in reversed(list(range(w))): if i == w-1: continue for j in range(h): @@ -164,7 +164,7 @@ def rectify_sub(image): # # |_ curr_pixel = BLACK - for j in reversed(range(h)): + for j in reversed(list(range(h))): if j == h-1: continue for i in range(w): @@ -181,10 +181,10 @@ def rectify_sub(image): # # curr_pixel = BLACK - for j in reversed(range(h)): + for j in reversed(list(range(h))): if j == h-1: continue - for i in reversed(range(w)): + for i in reversed(list(range(w))): last_pixel = curr_pixel curr_pixel = image.getpixel((i,j)) @@ -258,7 +258,7 @@ def segfill(image, mark_color, target_color): last_red = False - for entry in new_h_range.keys(): + for entry in list(new_h_range.keys()): if entry > 0: new_h_range[entry-1] = 1 new_h_range = sorted(new_h_range.keys()) @@ -348,7 +348,7 @@ def floodfill2(image, center, bg_color): last_marked = [[0,i] for i in range(h)]#center] last_marked2 = list() rounds = 0 - print(time.time()-t) + print((time.time()-t)) a = 0 b = 0 while last_marked: @@ -367,10 +367,10 @@ def floodfill2(image, center, bg_color): ########## #print([chr(x) for x in bytes_array]) - print(time.time()-t) + print((time.time()-t)) print([a,b]) image_out = Image.frombytes(mode, (w,h),"".join([chr(x) for x in bytes_array])) - print(time.time()-t) + print((time.time()-t)) image_out.show() @@ -472,7 +472,7 @@ def reduce_to_multi_color(img, bg, colors_map, threshold): else: tc, tc_map = entry, entry - if isinstance(tc, basestring): + if isinstance(tc, str): tc = color_hex_to_byte(tc) rr = r-tc[0] @@ -601,7 +601,7 @@ def fix_bounding_box(img, bounding_box): w = img.width h = img.height for key in bounding_box: - if isinstance(bounding_box[key], basestring): + if isinstance(bounding_box[key], str): bounding_box[key] = int(bounding_box[key]) if 'w' in bounding_box: if bounding_box['x'] < 0: @@ -718,7 +718,7 @@ def tint_image(image, color, border=2): def black_expand(image, mark_color, target_colors): w = image.width h = image.height - if isinstance(target_colors, basestring): + if isinstance(target_colors, str): target_colors = [target_colors] mark_color = tuple(color_hex_to_byte(mark_color)[0:3]) @@ -755,7 +755,7 @@ def black_expand(image, mark_color, target_colors): if j < h-1 and image.getpixel((i, j+1)) in target_colors: image.putpixel((i,j+1), mark_color) break - print("Black expand took: "+str(time.time()-t_time)) + print(("Black expand took: "+str(time.time()-t_time))) return image def expand_vertical(img, bg_color, target_color): @@ -800,7 +800,7 @@ def expand_vertical(img, bg_color, target_color): upset[j] = 1 for key in upset: image.putpixel((i, key), target) - print("vert expand ", time.time()-t_time) + print(("vert expand ", time.time()-t_time)) return image def expand_horizontal(img, bg_color, target_color): @@ -848,7 +848,7 @@ def expand_horizontal(img, bg_color, target_color): upset[i] = 1 for key in upset: image.putpixel((key, j), target) - print("horizontal expand ", time.time()-t_time) + print(("horizontal expand ", time.time()-t_time)) return image diff --git a/image_util.pyc b/image_util.pyc deleted file mode 100644 index e98cf05..0000000 Binary files a/image_util.pyc and /dev/null differ diff --git a/test.py b/test.py index 1f7e0cc..f793488 100644 --- a/test.py +++ b/test.py @@ -502,7 +502,7 @@ def main(): plud = {"person_box": person_box, "person_dict": {}} for i, key in enumerate(person_tiles): - print("p", i,key) + print(("p", i,key)) if pmap[i] >= 0: cropped_pic = person_dict[key] plud['person_dict'][cropped_pic] = { @@ -513,7 +513,7 @@ def main(): } for i, key in enumerate(fail_person_tiles): - print("pp", i,key) + print(("pp", i,key)) if pmapf[i] >= 0: cropped_pic = fail_person_dict[key] plud['person_dict'][cropped_pic] = { @@ -537,7 +537,7 @@ def main(): t = time.time() k, map_data = ParseScreenObstructions.parse_screen(im, tile_info, lud, plud, partial_center=True) - print(time.time()-t) + print((time.time()-t)) import pdb pdb.set_trace() @@ -608,7 +608,7 @@ class PathFinder: path.append((py,px, vy,vx)) py-=vy px-=vx - print("path", path[-1]) + print(("path", path[-1])) path = path[::-1] return path @@ -669,8 +669,8 @@ class PackageOutput: spec = " ".join(sp[:i]) break if spec not in " ".join(mem): - print("spec", spec) - print(" ".join(mem).split()) + print(("spec", spec)) + print((" ".join(mem).split())) specials[spec] = 1 else: sp = entry.split(" ") @@ -684,7 +684,7 @@ class PackageOutput: if not output: output.append("None") if specials: - print("____++", mem) + print(("____++", mem)) output.append("special,") for key in specials: output.append(key+",") @@ -803,7 +803,7 @@ class PackageOutput: if state_dict.get("paused") == 1: if self.pause_mode['active'] is True: output = list() - print(self.pause_mode) + print((self.pause_mode)) if self.pause_mode['active'] is False and clicked.get('start'): self.pause_mode['active'] = True self.pause_mode['goal'] = "menu" @@ -820,7 +820,7 @@ class PackageOutput: elif self.pause_mode['active'] and state_dict.get("start") and self.pause_mode['goal'] != "menu": pass elif self.pause_mode['active'] and not state_dict.get("start") and self.pause_mode['goal'] != "menu": - print(self.pause_mode['goal']) + print((self.pause_mode['goal'])) press_output = ["unpause"] elif self.pause_mode['active'] and self.pause_mode['total'] > 0: if state_dict.get("a"):#clicked.get("a"): @@ -860,7 +860,7 @@ class PackageOutput: break if path_data and x is not None and y is not None: path = PathFinder.find_path(path_data, 6-y,7+x) - print("X Y ",x,y,target, num, goal) + print(("X Y ",x,y,target, num, goal)) if path: vy = -1*path[0][2] vx = path[0][3] @@ -873,7 +873,7 @@ class PackageOutput: press_output.append("left") elif vx > 0: press_output.append("right") - print("AAAA ", map_data['tiles'][6-vy][7+vx]['type'], target) + print(("AAAA ", map_data['tiles'][6-vy][7+vx]['type'], target)) if map_data['tiles'][6-vy][7+vx]['type'] == target.replace(",", "").strip(): press_output.append("a") output = list() @@ -915,7 +915,7 @@ def main_b(): t = time.time() k, map_data = ParseScreenObstructions.parse_screen(im, tile_info, lud, plud, partial_center=True) - print( time.time()-t) + print(( time.time()-t)) import pdb pdb.set_trace() @@ -924,9 +924,9 @@ def main_c(): for i in range(10): im = Image.open("maps_"+str(2+i)+".png") t = time.time() - print ("--", po.memory) - print (po.run(im)) - print (time.time()-t) + print(("--", po.memory)) + print((po.run(im))) + print((time.time()-t)) import pdb pdb.set_trace() @@ -1052,7 +1052,7 @@ class ParseScreenObstructions: east_obs = i-8; for j, doc in enumerate(results['vertical']): - if doc and j != 6 and doc['obs']%2 == 1: + if doc and j != 6 and doc['obs']%2 == 1: if j < 6: north_obs = 5-j; if j > 6 and south_obs == None: @@ -1165,11 +1165,11 @@ class ParseScreenText: ch = seen[k] im.paste(load_image(ch), (c*8, 0)) - kk = found_tiles.keys() + kk = list(found_tiles.keys()) stra = [x for x in " >>ABCDEFGHIJ KLMNOPQRSTUVWXYZ',.123456789abcdefghijklmnopqrstuvwxyz-"] stra.extend(["..", "!", "?", " "," "," "," "," "," "," "," ",">",">"," "," ", "Mail", "Rod", " ", "Sword", " ", " "," "," "," "," "," ","Nunchucks", " ", " ","Hammer", " ", " ", " ", "Level", "/", "Weapon", " ", " ", " ", " ", "Status", " ", " ", " ", " ", " ", " ", ">", ">", " ", "E", ">", ">", "Fight", " ", " ", " "," ", " ", "Magic", " ", " ", " ", "Drink", " ", " ", " "]) output_dict = OrderedDict() - kk2 = [seen[x] for x in seen.keys()] + kk2 = [seen[x] for x in list(seen.keys())] for i, ch in enumerate(kk2): subi = load_image(ch) new_subi = reduce_to_colors(subi.convert("P", palette=Image.ADAPTIVE), ["FFFFFF"], 32) @@ -1267,7 +1267,7 @@ class TileTools: return ress[0][0:2] def to_image_key(img): - if isinstance(img, basestring): + if isinstance(img, str): img = load_image(img) key = image_to_string_format(img, "BMP") return key @@ -1314,11 +1314,11 @@ class ScreenSelector: #images have different bmp headers sometimes, so reformat them here. new_dict = dict() - for key, val in cls.luds['plud']['person_dict'].items(): + for key, val in list(cls.luds['plud']['person_dict'].items()): new_dict[image_to_string_format(load_image(key),"BMP")] = val cls.luds['plud']['person_dict'] = new_dict new_dict = dict() - for key, val in cls.luds['lud'].items(): + for key, val in list(cls.luds['lud'].items()): new_dict[image_to_string_format(load_image(key), "BMP")] = val cls.luds['lud'] = new_dict @@ -2159,9 +2159,9 @@ def main2(): im = load_image(image['image_data']) t = time.time() tex = ParseScreenText.parse_screen(im, f) - print (time.time()-t) + print((time.time()-t)) for coord, line in tex: - print(coord, line) + print((coord, line)) if tex: import pdb pdb.set_trace() @@ -2351,8 +2351,8 @@ def test_person(): po = PackageOutput("ff1_data.lud", "enemy_lookup.dat") import pdb pdb.set_trace() - print ("--", po.memory) - print (po.run(im, {"paused": 1})) + print(("--", po.memory)) + print((po.run(im, {"paused": 1}))) if __name__=='__main__': diff --git a/test.pyc b/test.pyc deleted file mode 100644 index 95d0a05..0000000 Binary files a/test.pyc and /dev/null differ diff --git a/test_serve.py b/test_serve.py index b694311..1b50b72 100644 --- a/test_serve.py +++ b/test_serve.py @@ -7,6 +7,7 @@ import time import accessible_output2.outputs.auto import os import base64 +import test po = test.PackageOutput("ff1_data.lud", "enemy_lookup.dat") auto_obj = accessible_output2.outputs.auto.Auto() @@ -17,7 +18,7 @@ def text_to_sound(string): data = base64.b64encode(open("wave_out.wav").read()) return data -class MainHandler(BaseHTTPServer.BaseHTTPRequestHandler): +class MainHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header("Content-type", "text/html") @@ -57,7 +58,7 @@ class MainHandler(BaseHTTPServer.BaseHTTPRequestHandler): state = doc.get('state', {}) t_time = time.time() strings, presses = po.run(im, state) - print('aaa', time.time()-t_time) + print(('aaa', time.time()-t_time)) words = " ".join(strings).replace(">", " ").split(" ") nw = list() for idx, word in enumerate(words): @@ -88,7 +89,7 @@ class MainHandler(BaseHTTPServer.BaseHTTPRequestHandler): self.send_response(200) self.send_header("Content-type", "text/html") output = json.dumps(res) - print(len(output), time.time()-t_time) + print((len(output), time.time()-t_time)) self.send_header("Content-Length", len(output)) self.end_headers() self.wfile.write(output) @@ -97,7 +98,7 @@ class MainHandler(BaseHTTPServer.BaseHTTPRequestHandler): def main(): host = "localhost" port = 4404 - server_class = BaseHTTPServer.HTTPServer + server_class = HTTPServer httpd = server_class((host, port), MainHandler) try: httpd.serve_forever()