| import streamlit as st |
| from PIL import Image |
| import numpy as np |
|
|
| |
| |
| |
|
|
| |
| |
| |
| |
| @st.cache_data |
| def load_placeholder_artifact(): |
| """Memuat artefak placeholder agar struktur kode mirip dengan OCR.""" |
| return True |
|
|
| |
| |
| |
|
|
| st.set_page_config( |
| page_title="Upload Gambar Sederhana", |
| layout="centered" |
| ) |
|
|
| st.title("Upload & Tampilkan Gambar Sederhana 📸") |
| st.markdown("---") |
|
|
| |
| |
| |
|
|
| |
| is_loaded = load_placeholder_artifact() |
|
|
| if is_loaded: |
|
|
| |
| 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..."): |
| |
| |
| 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 |
| |
| |
| st.image(input_image, caption=image_file.name, use_column_width=True) |
| |
| |
| 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`.") |