将矩形添加到 .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:])
假设您有 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:])