Spaces:
Build error
Build error
| import gradio as gr | |
| import requests | |
| import tempfile | |
| import os | |
| import cv2 | |
| import numpy as np | |
| def resize_img(img): | |
| h_base, w_base = (315, 420) # 表示したい画像サイズ | |
| h, w = img.shape[:2] # 読み込み画像サイズ | |
| if h!=h_base and w!=w_base: # 画像サイズが違う画像はリサイズ | |
| # 基本サイズが縦の方が小さいので縦に合わせるように倍率を縮小 | |
| out_img = cv2.resize(img, None, None, h_base/h, h_base/h) | |
| r_w = out_img.shape[1] # リサイズ後の横幅 | |
| if r_w > w_base: # 横サイズが大きい場合はトリミング | |
| out_img = out_img[:,int((r_w-w_base)/2):int((r_w+w_base)/2)] | |
| elif r_w < w_base: # 横サイズが小さい場合は白で埋める | |
| tmp = out_img | |
| # 白で埋める | |
| out_img = np.uint8(np.array([[[255]*3]*w_base]*h_base)) | |
| out_img[:,int((w_base-r_w)/2):int((w_base+r_w)/2)] = tmp | |
| else: # 画像サイズが同じ場合はスルー | |
| out_img = img | |
| # RGBに変換 | |
| rgb_img = cv2.cvtColor(out_img, cv2.COLOR_BGR2RGB) | |
| return rgb_img | |
| def imread_web(url): | |
| # 画像をリクエストする | |
| res = requests.get(url) | |
| img = None | |
| # Tempfileを作成して即読み込む | |
| fp = tempfile.NamedTemporaryFile(dir='./', delete=False) | |
| fp.write(res.content) | |
| fp.close() | |
| img = cv2.imread(fp.name) | |
| os.remove(fp.name) | |
| return img | |
| def url2img(url): | |
| return resize_img(imread_web(url)) | |
| demo = gr.Interface(fn=url2img, | |
| inputs='text', | |
| outputs='image') | |
| gr.Error("custom message") | |
| demo.launch() |