Hopefully made this python3 compatible.. Need exhaustive tessting.

This commit is contained in:
Michael Taboada 2024-08-06 09:41:40 -07:00
parent a6f29857c3
commit 7de3708efa
5 changed files with 49 additions and 48 deletions

View File

@ -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

Binary file not shown.

48
test.py
View File

@ -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()
@ -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__':

BIN
test.pyc

Binary file not shown.

View File

@ -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()