Golf8's picture
Update app.py
9a61bda verified
Raw
History Blame
2.11 kB
import gradio as gr
from PIL import Image, ImageEnhance, ImageFilter
def advanced_upscale(image, scale, enhance):
if image is None:
return None, "画像をアップロードしてください"
# 元のサイズ
width, height = image.size
new_width = int(width * scale)
new_height = int(height * scale)
# 高品質アップスケール
upscaled = image.resize((new_width, new_height), Image.LANCZOS)
# 追加補正
if enhance:
# シャープネス強化
upscaled = upscaled.filter(ImageFilter.UnsharpMask(radius=2, percent=150, threshold=3))
# コントラスト・明るさ調整
enhancer = ImageEnhance.Contrast(upscaled)
upscaled = enhancer.enhance(1.1)
enhancer = ImageEnhance.Sharpness(upscaled)
upscaled = enhancer.enhance(1.3)
# ファイルサイズ目安表示
import io
buf = io.BytesIO()
upscaled.save(buf, format="PNG", quality=95)
size_mb = len(buf.getvalue()) / (1024 * 1024)
return upscaled, f"✅ {scale}x 完了! 予想サイズ: {size_mb:.2f} MB"
with gr.Blocks(title="Kazの高画質化アプリ") as demo:
gr.Markdown("# 🖼️ KazのAI画像高画質化アプリ\n**改善版** - より綺麗に")
with gr.Row():
with gr.Column():
input_img = gr.Image(label="画像をアップロード", type="pil", height=500)
scale = gr.Radio([2, 4, 8], value=4, label="拡大倍率(8xでかなり重くなります)")
enhance = gr.Checkbox(label="さらにシャープ・コントラスト強化", value=True)
btn = gr.Button("🚀 高画質化開始", variant="primary")
with gr.Column():
output_img = gr.Image(label="処理結果", height=500)
status = gr.Textbox(label="結果")
btn.click(advanced_upscale, inputs=[input_img, scale, enhance], outputs=[output_img, status])
gr.Markdown("### Tips\n・4xか8xで試してみてください\n・ズームして比較すると違いが分かりやすいです")
demo.launch()