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`.")