V-MAGE-EVAL-DEMO / utils /img_to_zip.py
Fengx1n's picture
first commit
504b2e4
import os
import zipfile
from datetime import datetime
import imageio
from PIL import Image
def concatenate_images_horizontally(image_paths, output_path):
images = [Image.open(img_path) for img_path in image_paths]
# 计算总宽度和最大高度
total_width = sum(img.width for img in images)
max_height = max(img.height for img in images)
# 创建空白画布
combined_image = Image.new('RGB', (total_width, max_height))
# 拼接图片
x_offset = 0
for img in images:
combined_image.paste(img, (x_offset, 0))
x_offset += img.width
combined_image.save(output_path)
# start_name = input("start_name:")
# end_name = input("end_name:")
start_name = "/data1/zxx/runs/racegame/level1/swift_qwen2vl_config_7B/2024-11-24-19-10-52-452773/screen_2024-11-24-19-11-03-018045.png"
end_name = "/data1/zxx/runs/racegame/level1/swift_qwen2vl_config_7B/2024-11-24-19-10-52-452773/screen_2024-11-24-19-15-26-657684.png"
assert os.path.dirname(start_name) == os.path.dirname(end_name)
folder_path = os.path.dirname(start_name)
print(folder_path)
# 获取文件的时间信息以排序
def extract_timestamp(filename):
date_str = filename.replace("screen_", "").replace(".png", "")
return datetime.strptime(date_str, "%Y-%m-%d-%H-%M-%S-%f")
# 获取文件并排序
png_lst = sorted(
[f for f in os.listdir(folder_path) if f.endswith('.png') and start_name <= os.path.join(folder_path, f) <= end_name],
key=extract_timestamp
)
png_lst = [os.path.join(folder_path, f) for f in png_lst]
# 压缩文件
zip_filename = "selected_images.zip"
with zipfile.ZipFile(zip_filename, 'w') as zipf:
for file in png_lst:
zipf.write(file, arcname=file)
frames = []
for file in png_lst:
frames.append(imageio.imread(file))
gif_filename = "selected_images.gif"
imageio.mimsave("selected_images.gif", frames, 'GIF', duration=0.1, loop=0)
png_filename = "selected_images.png"
concatenate_images_horizontally(png_lst, png_filename)
print(f"已将 {len(png_lst)} 张图片成功压缩到 {zip_filename} 中,生成{gif_filename}, {png_filename}。")