veo3-api / src /utils /image_utils.py
dmmmmm's picture
Upload 28 files
0ab5288 verified
"""
图片处理工具函数
"""
import base64
from typing import List
from PIL import Image
def get_image_list(file_paths: List[str]) -> List[Image.Image]:
"""从文件路径列表获取PIL图片列表用于展示"""
if not file_paths:
return []
images = []
for path in file_paths:
try:
img = Image.open(path)
images.append(img)
except Exception:
continue
return images
def create_image_html(file_paths: List[str]) -> str:
"""创建图片展示的HTML代码"""
if not file_paths:
return "<div id='image-display-area'><div class='no-images'>No image uploaded - will generate from text only</div></div>"
html_items = []
for i, path in enumerate(file_paths):
try:
# 将图片转换为base64编码
with open(path, "rb") as img_file:
img_data = base64.b64encode(img_file.read()).decode()
img_ext = path.split('.')[-1].lower()
if img_ext in ['jpg', 'jpeg']:
mime_type = 'image/jpeg'
elif img_ext == 'png':
mime_type = 'image/png'
elif img_ext == 'gif':
mime_type = 'image/gif'
elif img_ext == 'webp':
mime_type = 'image/webp'
else:
mime_type = 'image/jpeg'
img_src = f"data:{mime_type};base64,{img_data}"
html_items.append(f"""
<div class="image-item" data-index="{i}">
<img src="{img_src}" alt="Uploaded image {i + 1}">
<div class="delete-btn" onclick="deleteImageByIndex({i})" data-index="{i}">×</div>
</div>
""")
except:
continue
if not html_items:
return "<div id='image-display-area'><div class='no-images'>No image uploaded - will generate from text only</div></div>"
html_content = f"""
<div id='image-display-area'>
{''.join(html_items)}
</div>
"""
return html_content