将矩形添加到 .tif 文件

adding a rectangle to .tif file

假设您有 14 页的 .tif 文件(多图像 tif)。我想在特定页面的特定位置绘制一个矩形。但是,下面的示例没有将我用 ImageDraw 绘制的 img 粘贴到第二页的任何位置。我在哪里失败了?

from PIL import Image, ImageDraw

im = Image.open('tiffile.tif')

for i, page in enumerate(ImageSequence.Iterator(im)):
    if i == 1:
        height = width = 800
        img = Image.new('RGB', (height, width), (255, 0, 0))
        draw = ImageDraw.Draw(img)
        page.paste(img, (0,0))
        

im.save('tiffile_b.tif', save_all=True)

就像@AKX 建议的那样,无需创建新图像即可将其粘贴到当前页面。而是在该页面上绘制矩形。但是,我必须将所有页面保存在一个列表中,然后从列表中的新页面创建一个新的 .tif 文件。

from PIL import Image, ImageDraw

im = Image.open('tiffile.tif')

frames=[]
for i, page in enumerate(ImageSequence.Iterator(im)):
    page = page.copy()
    if i == 1:
        box = (0, 590, 2272, 2570)
        draw = ImageDraw.Draw(page)
        draw.rectangle(box, outline=(0), fill=(250))
    frames.append(page)
            
frames[0].save('testfile_b.tif', save_all=True, append_images=frames[1:])