Joom's picture
Duplicate from taneemishere/html-code-generation-from-images-with-deep-neural-networks
cea929e
from __future__ import absolute_import
from __future__ import print_function
__author__ = 'Taneem Jan, taneemishere.github.io'
import os.path
from os.path import basename
from classes.Sampler import *
from classes.model.Main_Model import *
def dsl_code_generation(input_image):
trained_weights_path = "classes/model/bin"
trained_model_name = "Main_Model"
input_path = input_image
output_path = "data/output/"
search_method = "greedy"
meta_dataset = np.load("{}/meta_dataset.npy".format(trained_weights_path), allow_pickle=True)
input_shape = meta_dataset[0]
output_size = meta_dataset[1]
model = Main_Model(input_shape, output_size, trained_weights_path)
model.load(trained_model_name)
sampler = Sampler(trained_weights_path, input_shape, output_size, CONTEXT_LENGTH)
file_name = 'input_image_from_interface.png'
file_name = basename(file_name)[:basename(file_name).find(".")]
evaluation_img = Utils.get_preprocessed_img(input_path, IMAGE_SIZE)
if search_method == "greedy":
result, _ = sampler.predict_greedy(model, np.array([evaluation_img]))
print("Result greedy: \n {}".format(result))
with open("{}/{}.gui".format(output_path, file_name), 'w') as out_f:
out_f.write(result.replace(START_TOKEN, "").replace(END_TOKEN, ""))
return file_name, output_path
def compile_gui(file_path, filename):
from os.path import basename
from compiler.Utils import Utils
from compiler.Compiler import Compiler
input_path = (file_path + filename)
# remove the path
file_ = os.path.basename(input_path)
# remove the extension
file_ = os.path.splitext(file_)[0]
# add the extension of gui
file_ = "data/output/" + file_ + ".gui"
input_file = file_
FILL_WITH_RANDOM_TEXT = True
TEXT_PLACE_HOLDER = "[]"
dsl_path = "compiler/assets/web-dsl-mapping.json"
compiler = Compiler(dsl_path)
def render_content_with_text(key, value):
if FILL_WITH_RANDOM_TEXT:
if key.find("btn") != -1:
value = value.replace(TEXT_PLACE_HOLDER, Utils.get_random_text())
elif key.find("title") != -1:
value = value.replace(TEXT_PLACE_HOLDER, Utils.get_random_text(length_text=5, space_number=0))
elif key.find("text") != -1:
value = value.replace(TEXT_PLACE_HOLDER,
Utils.get_random_text(length_text=56, space_number=7, with_upper_case=False))
return value
file_uid = basename(input_file)[:basename(input_file).find(".")]
path = input_file[:input_file.find(file_uid)]
input_file_path = "{}{}.gui".format(path, file_uid)
output_file_path = "{}{}.html".format(path, file_uid)
html_code = compiler.compile(input_file_path, output_file_path, rendering_function=render_content_with_text)
print("Generated code is compiled..!!")
return html_code
def main_method(input_image_from_interface):
file_name, file_output_path = dsl_code_generation(input_image_from_interface)
result = compile_gui(file_output_path, file_name)
return result