python
import cairosvg
import imageio
from PIL import Image
import io
import os
def svg_to_png(svg_path, png_path):
try:
cairosvg.svg2png(url=svg_path, write_to=png_path)
print(f"成功将 {svg_path} 转换为 {png_path}")
except Exception as e:
print(f"转换为 PNG 时出错: {e}")
def svg_to_gif(svg_path, gif_path):
try:
# 将 SVG 转换为 PNG 图像
png_bytes = cairosvg.svg2png(url=svg_path)
image = Image.open(io.BytesIO(png_bytes))
# 将 PNG 图像保存为 GIF
image.save(gif_path, save_all=True, append_images=[image], duration=100, loop=0)
print(f"成功将 {svg_path} 转换为 {gif_path}")
except Exception as e:
print(f"转换为 GIF 时出错: {e}")
if __name__ == "__main__":
current_directory = os.getcwd()
input_directory = current_directory#os.path.join(current_directory, 'input_svgs')
output_directory = os.path.join(current_directory, 'output_images')
if not os.path.exists(output_directory):
os.makedirs(output_directory)
for filename in os.listdir(input_directory):
if filename.endswith('.svg'):
svg_file = os.path.join(input_directory, filename)
base_name = os.path.splitext(filename)[0]
png_file = os.path.join(output_directory, f'{base_name}.png')
gif_file = os.path.join(output_directory, f'{base_name}.gif')
svg_to_png(svg_file, png_file)
svg_to_gif(svg_file, gif_file)