| """ |
| Image preview component for the embed_explore application. |
| """ |
|
|
| import streamlit as st |
| import os |
|
|
| from shared.utils.logging_config import get_logger |
|
|
| logger = get_logger(__name__) |
|
|
| |
| _last_displayed_path = None |
|
|
|
|
| def render_image_preview(): |
| """Render the image preview panel for local image files.""" |
| global _last_displayed_path |
|
|
| valid_paths = st.session_state.get("valid_paths", None) |
| labels = st.session_state.get("labels", None) |
| kmeans_col = st.session_state.get("kmeans_column", None) |
| selected_idx = st.session_state.get("selected_image_idx", None) |
|
|
| if ( |
| valid_paths is not None and |
| selected_idx is not None and |
| 0 <= selected_idx < len(valid_paths) |
| ): |
| img_path = valid_paths[selected_idx] |
| cluster = labels[selected_idx] if labels is not None else None |
|
|
| if _last_displayed_path != img_path: |
| log_msg = f"[Image] Loading local file: {os.path.basename(img_path)}" |
| if cluster is not None: |
| log_msg += f" (cluster={cluster})" |
| logger.info(log_msg) |
| _last_displayed_path = img_path |
|
|
| caption = os.path.basename(img_path) |
| if cluster is not None and kmeans_col: |
| caption = f"{kmeans_col}={cluster}: {caption}" |
|
|
| st.image(img_path, caption=caption, width='stretch') |
| st.markdown(f"**File:** `{os.path.basename(img_path)}`") |
| if cluster is not None and kmeans_col: |
| st.markdown(f"**{kmeans_col}:** `{cluster}`") |
| else: |
| st.info("Image preview will appear here after you select a point in the scatter.") |
|
|