base64-to-img.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. """
  2. Base64 转图片工具
  3. 将 base64 字符串转换为图片文件
  4. """
  5. import sys
  6. import os
  7. import base64
  8. def main():
  9. if len(sys.argv) < 3:
  10. print("错误: 需要提供 base64 字符串和输出路径", file=sys.stderr)
  11. print("用法: python base64-to-img.py <base64字符串或文件路径> <输出图片路径>", file=sys.stderr)
  12. sys.exit(1)
  13. base64_input = sys.argv[1]
  14. output_path = sys.argv[2]
  15. try:
  16. # 判断输入是文件路径还是 base64 字符串
  17. base64_data = None
  18. if os.path.isfile(base64_input):
  19. # 如果是文件路径,读取文件内容
  20. with open(base64_input, 'r', encoding='utf-8') as f:
  21. base64_data = f.read().strip()
  22. else:
  23. # 否则当作 base64 字符串处理
  24. base64_data = base64_input.strip()
  25. # 清理 Base64 数据:移除可能存在的 data URL 前缀
  26. if ',' in base64_data:
  27. # 如果包含逗号,说明可能有 data:image/...;base64, 前缀
  28. base64_index = base64_data.index(',')
  29. base64_data = base64_data[base64_index + 1:]
  30. base64_data = base64_data.strip()
  31. # 解码 base64
  32. try:
  33. image_data = base64.b64decode(base64_data)
  34. except Exception as e:
  35. print(f"错误: Base64 解码失败 - {e}", file=sys.stderr)
  36. sys.exit(1)
  37. # 创建输出目录(如果不存在)
  38. output_dir = os.path.dirname(output_path)
  39. if output_dir and not os.path.exists(output_dir):
  40. os.makedirs(output_dir, exist_ok=True)
  41. # 写入图片文件
  42. with open(output_path, 'wb') as f:
  43. f.write(image_data)
  44. print(f"成功: Base64 已转换为图片: {output_path}")
  45. except Exception as error:
  46. print(f"错误: {error}", file=sys.stderr)
  47. import traceback
  48. traceback.print_exc()
  49. sys.exit(1)
  50. if __name__ == '__main__':
  51. main()