好友
阅读权限10
听众
最后登录1970-1-1
|
# !/usr/bin/env python
# coding=utf-8
from __future__ import (absolute_import, division, print_function, unicode_literals)
from PIL import Image
# 4张4K图片合成2x2网格并保持最终输出为3840x2160分辨率
def composite_4k_grid(input_files, output_path):
if len(input_files) != 4:
raise ValueError("需要精确4张输入图片")
# 打开所有图片并验证尺寸
images = [Image.open(f) for f in input_files]
for idx, img in enumerate(images):
if img.size != (3840, 2160):
raise ValueError(f"第{idx + 1}张图片尺寸不符要求,应为3840x2160")
# 创建新画布
canvas = Image.new('RGB', (3840, 2160))
# 定义网格参数
grid_params = [
{"position": (0, 0), "size": (1920, 1080)},
{"position": (1920, 0), "size": (1920, 1080)},
{"position": (0, 1080), "size": (1920, 1080)},
{"position": (1920, 1080), "size": (1920, 1080)}
]
for img, param in zip(images, grid_params):
# 高质量缩小图片(使用LANCZOS算法)
resized = img.resize(param["size"], Image.Resampling.LANCZOS)
canvas.paste(resized, param["position"])
canvas.save(output_path, quality=95, subsampling=0)
return
if __name__ == '__main__':
input_files = ['D:\\必应壁纸\\有羽毛的时尚达人.jpg', # 左上
'D:\\必应壁纸\\红绿金刚鹦鹉之家.jpg', # 右上
'D:\\必应壁纸\\物以类聚,人以群分.jpg', # 左下
'D:\\必应壁纸\\物以类聚.jpg' # 右下
]
output_path = 'D:\\必应壁纸\\combined_4k.jpg' # 输出文件
composite_4k_grid(input_files, output_path)
|
|