HATSAT / interface /css_styles.py
BorisEm's picture
Broke down code base into smaller files for readibility
0def483
Raw
History Blame Contribute Delete
1.84 kB
"""
CSS styling and sample image utilities for Gradio interface.
"""
import os
import glob
from utils.image_utils import image_to_base64
def get_sample_images():
"""Get list of sample images."""
sample_dir = "sample_images"
if os.path.exists(sample_dir):
image_files = glob.glob(os.path.join(sample_dir, "*.png")) + glob.glob(os.path.join(sample_dir, "*.jpg"))
return sorted(image_files)
return []
def generate_css():
"""Generate CSS with base64 images for sample buttons."""
base_css = """
/* Target only the image display area, not the whole component */
.image-container [data-testid="image"] {
height: 500px !important;
min-height: 500px !important;
}
/* Make images fill their containers */
.image-container img {
width: 500px !important;
height: 500px !important;
object-fit: contain !important;
object-position: center !important;
}
/* Sample image buttons with background images */
.sample-image-btn {
height: 120px !important;
width: 120px !important;
background-size: cover !important;
background-position: center !important;
border: 2px solid #ddd !important;
border-radius: 8px !important;
cursor: pointer !important;
transition: border-color 0.2s !important;
margin: 5px !important;
}
.sample-image-btn:hover {
border-color: #007acc !important;
}
"""
# Add background images for each sample (only if samples exist)
sample_images = get_sample_images()
if sample_images:
for i, img_path in enumerate(sample_images):
try:
base64_img = image_to_base64(img_path)
base_css += f"#sample_btn_{i} {{ background-image: url('{base64_img}'); }}\n"
except Exception:
# Skip invalid images
continue
return base_css