trial / src /streamlit_app.py
Delima1's picture
Update src/streamlit_app.py
608f890 verified
import streamlit as st # Web App
from PIL import Image # Image Processing (Pillow)
import numpy as np # Dipertahankan untuk konsistensi meskipun tidak digunakan untuk fungsi inti
# =========================
# FUNGSI UTILITAS: MEMUAT ARTIFAK/MODEL KOSONG
# =========================
# Kita buat fungsi dummy ini agar struktur kode Anda mirip dengan kode OCR
# yang memisahkan pemuatan sumber daya
# Gunakan st.cache_data (pengganti st.cache untuk data)
# atau st.cache_resource (untuk model) - di sini pakai data karena outputnya sederhana
@st.cache_data
def load_placeholder_artifact():
"""Memuat artefak placeholder agar struktur kode mirip dengan OCR."""
return True
# =========================
# KONFIGURASI DAN JUDUL
# =========================
st.set_page_config(
page_title="Upload Gambar Sederhana",
layout="centered"
)
st.title("Upload & Tampilkan Gambar Sederhana 📸")
st.markdown("---")
# =========================
# LOGIKA UTAMA APLIKASI
# =========================
# Panggil fungsi placeholder, mirip seperti Anda memanggil load_model()
is_loaded = load_placeholder_artifact()
if is_loaded:
# Image Uploader (menggunakan label dan type yang sama)
image_file = st.file_uploader(
label="Upload gambar Anda di sini",
type=['png', 'jpg', 'jpeg']
)
if image_file is not None:
st.markdown("### 🖼️ Pratinjau Gambar")
with st.spinner("⏳ Sedang memuat gambar..."):
# 1. Baca gambar menggunakan PIL (persis seperti di kode OCR)
try:
input_image = Image.open(image_file)
except Exception as e:
st.error(f"❌ Gagal membaca file gambar. Error: {e}")
st.warning("Pastikan file yang diunggah adalah gambar yang valid.")
return # Hentikan jika gagal baca
# 2. Tampilkan Gambar (persis seperti di kode OCR)
st.image(input_image, caption=image_file.name, use_column_width=True)
# Opsional: Tampilkan dimensi
st.caption(f"Dimensi: {input_image.width} x {input_image.height} piksel")
st.success("✅ Gambar berhasil diunggah dan ditampilkan!")
st.balloons()
else:
st.info("⬆️ Silakan unggah gambar PNG, JPG, atau JPEG.")
else:
st.error("Gagal memuat artefak/sumber daya awal.")
st.markdown("---")
st.caption("Fungsionalitas ini hanya untuk menguji `st.file_uploader`.")