Untitled
unknown
plain_text
a year ago
4.0 kB
1
Indexable
Never
import streamlit as st import requests from PIL import Image # Title st.title("TEXT TO IMAGE") # Text Input # save the input text in the variable 'name' # first argument shows the title of the text input box # second argument displays a default text inside the text input area prompt = st.text_input("Enter Your Prompt", "") # slider # first argument takes the title of the slider # second argument takes the starting of the slider # last argument takes the end number grid_size = st.slider("Select the grid_size", 1, 3) # print the level # format() is used to print value # of a variable at a specific position # Dữ liệu cần gửi dưới dạng dictionary data = { 'prompt': prompt.title(), 'grid_size': grid_size } if(st.button('Draw')): # Gửi POST request response = requests.post('http://127.0.0.1:5000/api', json=data) # Kiểm tra xem request có thành công không if response.status_code == 200: result = response.json() if(result['message']=="Success"): st.success("Thành công") image = Image.open("D:/text2image/generated.png") st.image(image,caption=prompt.title()) else: st.error("Lỗi khi sinh ảnh") else: st.error("Lỗi khi gửi POST request") from flask import Flask, request, jsonify from PIL import Image import os from min_dalle import MinDalle import torch from imgurpython import ImgurClient ########################################### model = MinDalle( is_mega=False, models_root='min-dalle-main/pretrained', is_reusable=False, is_verbose=True, dtype=torch.float32 ) client_id = '2eb62070d6c69a3' client_secret = 'da2ccfbdf29051fe858c0c3238b76f106d37f281' client = ImgurClient(client_id, client_secret) image_path = 'generated.png' def ascii_from_image(image: Image.Image, size: int = 128) -> str: gray_pixels = image.resize((size, int(0.55 * size))).convert('L').getdata() chars = list('.,;/IOX') chars = [chars[i * len(chars) // 256] for i in gray_pixels] chars = [chars[i * size: (i + 1) * size] for i in range(size // 2)] return '\n'.join(''.join(row) for row in chars) def save_image(image: Image.Image, path: str): if os.path.isdir(path): path = os.path.join(path, 'generated.png') elif not path.endswith('.png'): path += '.png' print("saving image to", path) image.save(path) return image def generate_image( text: str, grid_size: int, ): image = model.generate_image( text, -1, grid_size, top_k=128, is_verbose=True ) save_image(image, 'generated') print(ascii_from_image(image, size=128)) def create_link(): data = client.upload_from_path(image_path) image_url = data['link'] print('output:', image_url) return image_url ############################################ app = Flask(__name__) @app.route('/api', methods=['GET']) def get_data(): # Code xử lý cho GET request data = "Hello API" return {'data': data} @app.route('/api', methods=['POST']) def post_api(): data = request.get_json() # Lấy dữ liệu từ request dưới dạng JSON prompt = data.get('prompt') # Lấy giá trị trường 'name' từ dữ liệu JSON grid_size = data.get('grid_size') image = generate_image(prompt,grid_size) # img_link = create_link() response = { 'message': 'Success', # 'output': img_link } # Thực hiện xử lý với dữ liệu nhận được # Ở đây chúng ta có thể lưu dữ liệu vào cơ sở dữ liệu hoặc thực hiện những tác vụ khác # Trong ví dụ này, chúng ta chỉ in ra tên người dùng nhận được return jsonify(response) # # if __name__ == '__main__': app.run()