img_pdf_png.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import os
  2. from datetime import datetime
  3. from PIL import Image
  4. def merge_images(image_folder, output_file, file_name, output_type, n=1):
  5. # 获取所有图像文件的列表
  6. image_files = [f for f in os.listdir(image_folder) if f.endswith('.png')]
  7. # 计算每个小图像的大小和大图像的大小
  8. image_count = len(image_files)
  9. if image_count == 0:
  10. print('No image files found in the directory:', image_folder)
  11. return
  12. # 将所有小图像粘贴到新图像的正确位置
  13. target_img = {}
  14. new_img_size1 = 0
  15. new_img_size0 = 0
  16. for i, f in enumerate(image_files):
  17. idx = f.strip('.png')
  18. target_img[int(idx)] = f
  19. # 计算小图像的大小以及大图像的大小
  20. img = Image.open(os.path.join(image_folder, image_files[i]))
  21. img_size1 = int(img.size[1] / n)
  22. if i == 0:
  23. new_img_size0 = int(img.size[0] / n)
  24. new_img_size1 += img_size1
  25. # 创建一个新的大图像
  26. new_img = Image.new('RGB', (new_img_size0, new_img_size1), 'white')
  27. # 将所有小图像粘贴到新图像的正确位置
  28. now_height = 0
  29. for i in range(image_count):
  30. img = Image.open(os.path.join(image_folder, target_img[i]))
  31. img_size0 = int(img.size[0] / n)
  32. img_size1 = int(img.size[1] / n)
  33. img = img.resize((img_size0, img_size1))
  34. if i != 0:
  35. now_height += img.size[1]
  36. # 纵向拼接图片
  37. new_img.paste(img, (0, now_height))
  38. # 默认两种类型都生成
  39. if output_type == "":
  40. new_img.save(r'{}/{}.png'.format(output_file, file_name))
  41. new_img.save(r'{}/{}.pdf'.format(output_file, file_name), 'PDF', resolution=100.0, save_all=True)
  42. elif output_type == "img":
  43. new_img.save(r'{}/{}.png'.format(output_file, file_name))
  44. elif output_type == "pdf":
  45. new_img.save(r'{}/{}.pdf'.format(output_file, file_name), 'PDF', resolution=100.0, save_all=True)
  46. # 调用截图函数
  47. if __name__ == "__main__":
  48. # 用法示例
  49. image_folder = './imgs'
  50. output_file = './screenshot'
  51. file_name = 'output1'
  52. merge_images(image_folder, output_file, file_name=file_name)