import streamlit as st
import os
from core import process_header_image
def main():
st.markdown("""
# Pic-to-Header
![Pic-to-Header Result](https://raw.githubusercontent.com/Sunwood-ai-labs/pic-to-header/refs/heads/main/assets/result.png)
[![GitHub license](https://img.shields.io/github/license/Sunwood-ai-labs/pic-to-header)](https://github.com/Sunwood-ai-labs/pic-to-header/blob/main/LICENSE)
[![GitHub stars](https://img.shields.io/github/stars/Sunwood-ai-labs/pic-to-header)](https://github.com/Sunwood-ai-labs/pic-to-header/stargazers)
[![GitHub issues](https://img.shields.io/github/issues/Sunwood-ai-labs/pic-to-header)](https://github.com/Sunwood-ai-labs/pic-to-header/issues)
![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)
![Streamlit](https://img.shields.io/badge/Streamlit-FF4B4B?style=for-the-badge&logo=Streamlit&logoColor=white)
![OpenCV](https://img.shields.io/badge/opencv-%23white.svg?style=for-the-badge&logo=opencv&logoColor=white)
Pic-to-Headerは、マスク画像と入力画像を使用してヘッダー画像を生成するPythonアプリケーションです。
""", unsafe_allow_html=True)
st.write("マスク画像と入力画像をアップロードして、ヘッダー画像を生成します。")
input_image = st.file_uploader("入力画像をアップロード", type=["png", "jpg", "jpeg"])
mask_image = st.file_uploader("マスク画像をアップロード", type=["png", "jpg", "jpeg"])
if input_image is not None and mask_image is not None:
if st.button("ヘッダー画像を生成"):
# 一時ファイルとして保存
input_path = f"temp_input.{input_image.name.split('.')[-1]}"
mask_path = f"temp_mask.{mask_image.name.split('.')[-1]}"
output_path = "output_header.png"
with open(input_path, "wb") as f:
f.write(input_image.getbuffer())
with open(mask_path, "wb") as f:
f.write(mask_image.getbuffer())
# 画像処理
process_header_image(input_path, mask_path, output_path)
# 結果を表示
st.image(output_path, caption="生成されたヘッダー画像")
# ダウンロードボタンを追加
with open(output_path, "rb") as file:
btn = st.download_button(
label="ヘッダー画像をダウンロード",
data=file,
file_name="header_image.png",
mime="image/png"
)
# 一時ファイルを削除
os.remove(input_path)
os.remove(mask_path)
os.remove(output_path)
if __name__ == "__main__":
main()