大图裁图代码

需要进行多个相机拼图,拼图方法采用相机位置和相机生成图片的编号,进行拼接。改代码用于生成小图,便于前端工程师进行拼图测试

from PIL import Image, ImageDraw, ImageFont

# 定义原图的尺寸
width = 328
height = 1000

# 定义分割的份数
x_parts = 4
y_parts = 30

# 计算每个小图片的尺寸
part_width = width // x_parts
part_height = height // y_parts

# 创建一个灰色的大图
image = Image.new('RGB', (width, height), color='gray')
draw = ImageDraw.Draw(image)
image.save('full_image_1chanel.jpeg',format='JPEG', quality=20)
image.save('output_jp2.jp2', format='JPEG2000')
# 设置字体(需要系统支持字体文件)
try:
    font = ImageFont.truetype("arial.ttf", 10)  # 使用Arial字体,字号为10
except IOError:
    font = ImageFont.load_default()  # 如果系统没有Arial字体,使用默认字体

# 保存每个小图片
for i in range(x_parts):
    for j in range(y_parts):
        # 计算小图片的边界
        left = i * part_width
        upper = j * part_height
        right = left + part_width
        lower = upper + part_height
        
        # 计算小图片中心的坐标
        center_x = left + part_width // 2
        center_y = upper + part_height // 2
        
        # 在小图片中心绘制坐标文字
        text = f"({i},{j})"
        # 使用 getbbox 计算文本的尺寸
        text_bbox = font.getbbox(text)
        text_width = text_bbox[2] - text_bbox[0]
        text_height = text_bbox[3] - text_bbox[1]
        text_position = (center_x - text_width // 2, center_y - text_height // 2)
        draw.text(text_position, text, fill="white", font=font)

        # 裁剪小图片
        part_image = image.crop((left, upper, right, lower))
        
        # 保存小图片,文件名包含坐标
        part_image.save(f'HY00001_123456789012345_{i}_{j}.png')

# 保存完整的大图(可选)
gray_image = image.convert('L') //单通道PNG
gray_image.save('full_image_1chanel.png')


print("图片分割完成,每个小图片已保存。")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值