import sys, random, argparse import numpy as np import math from PIL import Image, ImageFont, ImageDraw import gradio as gr # 70 levels of gray gscale1 = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,\\"^`'. " # 10 levels of gray gscale2 = '@%#*+=-:. ' def getAverageL(image): im = np.array(image) w, h = im.shape return np.average(im.reshape(w*h)) def covertImageToAscii(input_img, cols, scale, moreLevels): global gscale1, gscale2 image = Image.fromarray(input_img).convert('L') W, H = image.size[0], image.size[1] w = W/cols h = w/scale rows = int(H/h) if cols > W or rows > H: print("Image too small for specified cols!") exit(0) aimg = [] for j in range(rows): y1 = int(j*h) y2 = int((j+1)*h) if j == rows-1: y2 = H aimg.append("") for i in range(cols): x1 = int(i*w) x2 = int((i+1)*w) if i == cols-1: x2 = W img = image.crop((x1, y1, x2, y2)) avg = int(getAverageL(img)) if moreLevels: gsval = gscale1[int((avg*69)/255)] else: gsval = gscale2[int((avg*9)/255)] aimg[j] += gsval return aimg def sepia(input_img): aimg = covertImageToAscii(input_img, 200, 0.43, False) my_image = Image.new(mode="RGB", size=(2000, 2000), color=(0, 0, 0)) image_editable = ImageDraw.Draw(my_image) image_editable.text((10, 10), "\n".join(aimg), (237, 230, 211)) return [my_image, "\n".join(aimg)] iface = gr.Interface(sepia, gr.inputs.Image(shape=(200, 200)), ["image", "text"], title = "ASCII Art", description = "Convert an image to ASCII art based on ascii character density. Copy and paste the text to a notepad to see it correctly") iface.launch(server_name="0.0.0.0", server_port=7860) ''' import gradio as gr import numpy as np from PIL import Image def generate_ascii_art(image): try: # Convert the numpy array to a PIL Image img = Image.fromarray(np.uint8(image)) # Resize the image to a smaller size for faster processing img = img.resize((80, 60)) # Convert the image to grayscale img = img.convert("L") # Define ASCII characters to represent different intensity levels ascii_chars = "@%#*+=-:. " # Convert each pixel to ASCII character based on intensity ascii_image = "" for pixel_value in img.getdata(): ascii_image += ascii_chars[pixel_value // 25] # Reshape the ASCII string to match the resized image dimensions ascii_image = "\n".join([ascii_image[i:i + img.width] for i in range(0, len(ascii_image), img.width)]) return ascii_image except Exception as e: return f"Error: {e}" iface = gr.Interface( fn=generate_ascii_art, inputs="image", outputs="text", title="ASCII Art Generator", description="Upload an image, and this app will turn it into ASCII art!", live=True ) iface.launch(server_name="0.0.0.0", server_port=7860) ''' ''' import gradio as gr import subprocess def run_command(command): try: result = subprocess.check_output(command, shell=True, text=True) return result except subprocess.CalledProcessError as e: return f"Error: {e}" iface = gr.Interface( fn=run_command, inputs="text", outputs="text", #live=True, title="Command Output Viewer", description="Enter a command and view its output.", examples=[ ["ls"], ["pwd"], ["echo 'Hello, Gradio!'"]] ) iface.launch(server_name="0.0.0.0", server_port=7860) '''