Spaces:
Runtime error
Runtime error
| import os | |
| import gradio as gr | |
| import cv2 | |
| import numpy as np | |
| def read_files(source_file): | |
| jpg_files = [] | |
| txt_files = [] | |
| for file in os.listdir(source_file): | |
| if file.endswith(".jpg"): | |
| jpg_files.append(os.path.join(source_file, file)) | |
| txt_file = os.path.join(source_file, file[:-4] + ".txt") | |
| if os.path.exists(txt_file): | |
| txt_files.append(txt_file) | |
| else: | |
| txt_files.append(None) | |
| return jpg_files, txt_files | |
| def load_jpg(jpg_file): | |
| img = cv2.imread(jpg_file) | |
| return cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
| def load_txt(txt_file): | |
| with open(txt_file) as f: | |
| text = f.read().strip() | |
| return text | |
| def save_txt(txt_file, text): | |
| with open(txt_file, "w") as f: | |
| f.write(text) | |
| def main(source_file, target_file): | |
| jpg_files, txt_files = read_files(source_file) | |
| preview_list = gr.inputs.CheckboxGroup(jpg_files, label="Preview List") | |
| input_box = gr.inputs.Textbox(lines=5, placeholder="Enter text here", label="Text Input") | |
| gradio_interface = gr.Interface( | |
| fn=None, | |
| inputs=[preview_list], | |
| outputs=[gr.outputs.Image(type="numpy", label="Image Preview"), input_box], | |
| layout="vertical", | |
| theme="compact", | |
| title="Image Text Editor", | |
| description="Select an image from the preview list and edit the associated text." | |
| ) | |
| def image_text_editor(preview_list): | |
| selected_file = preview_list[0] | |
| selected_index = jpg_files.index(selected_file) | |
| jpg_file = jpg_files[selected_index] | |
| txt_file = txt_files[selected_index] | |
| img = load_jpg(jpg_file) | |
| if txt_file is not None: | |
| text = load_txt(txt_file) | |
| input_box.placeholder = text | |
| suggestions = [f"({i}) {word}" for i, word in enumerate(text.split(","))] | |
| output_box = gr.outputs.CheckboxGroup(suggestions, label="Text Suggestions") | |
| gradio_interface.set_output([img, input_box, output_box]) | |
| else: | |
| gradio_interface.set_output([img, input_box]) | |
| def apply_suggestion(suggestion): | |
| original_text = input_box.value | |
| selected_index = int(suggestion[1:].split(")")[0]) | |
| words = original_text.split(",") | |
| if selected_index < len(words): | |
| words[selected_index] = "" | |
| new_text = ",".join(words) | |
| input_box.update(new_text) | |
| def save_image_text(): | |
| selected_file = preview_list[0] | |
| selected_index = jpg_files.index(selected_file) | |
| jpg_file = jpg_files[selected_index] | |
| txt_file = os.path.join(target_file, os.path.basename(jpg_file)[:-4] + ".txt") | |
| save_txt(txt_file, input_box.value) | |
| new_jpg_file = os.path.join(target_file, os.path.basename(jpg_file)) | |
| os.makedirs(os.path.dirname(new_jpg_file), exist_ok=True) | |
| os.rename(jpg_file, new_jpg_file) | |
| gradio_interface.set_output("Text and image saved successfully.") | |
| gradio_interface.add_output("Text Suggestions", apply_suggestion) | |
| gradio_interface.add_output("Save", save_image_text) | |
| gradio_interface.launch() | |
| if __name__ == "__main__": | |
| source_file = gr.inputs.Textbox(lines=1,label="source_file") | |
| target_file = gr.inputs.Textbox(lines=1,label="target_file") | |
| interface = gr.Interface( | |
| fn=main, | |
| [source_file,target_file] | |
| ) | |
| interface.launch() | |