udayjawheri's picture
Update app.py
29fdb3c verified
import os
import random
import cv2
import gradio as gr
from PIL import Image
import numpy as np
def generate_and_delete_word_image(word):
"""Generates a combined image, displays it, and deletes it afterward.
Args:
word: The user-provided word (uppercase).
Returns:
The image data for displaying.
"""
word = word.upper()
dataset_path = "dataset/" # Adjust for your dataset path
# sample = "C:\DYPIU\___________________CODE___________________\Random Word Genrator\dataset\samples.jpg"
resized_images = []
for letter in word:
letter_folder_path = os.path.join(dataset_path, letter)
# Check if the folder exists
if not os.path.isdir(letter_folder_path):
print("Folder not found for the letter:", letter)
continue
images_in_folder = [img for img in os.listdir(letter_folder_path)
if img.endswith(".jpg") or img.endswith(".png")]
if not images_in_folder:
print("No images found for the letter:", letter)
continue
# Randomly select an image from the folder
random_image_name = random.choice(images_in_folder)
image_path = os.path.join(letter_folder_path, random_image_name)
try:
# Load image using PIL, ensuring RGB mode
image = Image.open(image_path).convert("RGB")
# Convert to NumPy array for OpenCV
resized_image = np.array(image.resize((250, 250)))
except Exception as e:
print(f"Error loading image: {e}")
continue
resized_images.append(resized_image)
if not resized_images:
print("No images found for the input word.")
return None
# sample_img = sample
concatenated_image = cv2.hconcat(resized_images)
# Display the concatenated image
# cv2.imshow("Concatenated Image", concatenated_image)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
# Return the image data
return concatenated_image
# Gradio interface with clear explanations
interface = gr.Interface(
fn=generate_and_delete_word_image,
inputs="text", # User input for the word
outputs="image", # Output as an image
title="POCKET RANDOM NOTE GENERATOR", # Title
description="Randsomator allows you to generate random ranson with one click.",
css="""
botton {
background: green;
color: #32B531
}
body {
background-color: black;
font-family: Arial, sans-serif;
}
.gr-interactive-component h1 {
font-size: 20px;
margin-bottom: 10px;
}
""",
)
interface.launch(share=True) # Launch the Gradio interface and share it publicly