多页 tiff 调整大小 python
Multi-Page tiff resizing python
首先 post 这里,虽然我已经花了几天时间在这里搜索各种查询。 Python3.6、Pillow和tiff处理
我想通过将一些图像从非常大调整为匹配 A4 格式来自动执行我们的一项手动任务。我们使用的是 tiff 格式,有时(经常)包含不止一页。所以我写道:
from PIL import Image,
...
def image_resize(path, dcinput, file):
dcfake = read_config(configlocation)["resize"]["dcfake"]
try:
imagehandler = Image.open(path+file)
imagehandler = imagehandler.resize((2496, 3495), Image.ANTIALIAS)
imagehandler.save(dcinput+file, optimize=True, quality=95)
except Exception:
但是非常(不)明显的是只有 tiff 的第一页被转换。这不完全是我对这个库的期望,但是我试图挖掘,并找到了一种从 tiff 中枚举每个页面并将其保存为单独文件的方法。
imagehandler = Image.open(path+file)
for i, page in enumerate(ImageSequence.Iterator(imagehandler)):
page = page.resize((2496, 3495), Image.ANTIALIAS)
page.save(dcinput + "proces%i.tif" %i, optimize=True, quality=95, save_all=True)
现在我可以使用 imagemagick 或一些内部命令将多个页面转换为一个页面,但这不是我想要做的,因为它会导致代码复杂化。
我的问题是,有没有独角兽可以帮助我:
1) 动态调整给定多页 tiff 的所有页面大小
2) 从几个争吵中建立一个争吵
我只想关注 python 模块。
谢谢
看看这个例子。它将使 TIF 文件的每一页缩小四倍(通过将每页的宽度和高度减半):
from PIL import Image
from PIL import ImageSequence
from PIL import TiffImagePlugin
INFILE = 'multipage_tif_example.tif'
OUTFILE = 'multipage_tif_resized.tif'
print ('Resizing TIF pages')
pages = []
imagehandler = Image.open(INFILE)
for page in ImageSequence.Iterator(imagehandler):
new_size = (page.size[0]/2, page.size[1]/2)
page = page.resize(new_size, Image.ANTIALIAS)
pages.append(page)
print ('Writing multipage TIF')
with TiffImagePlugin.AppendingTiffWriter(OUTFILE) as tf:
for page in pages:
page.save(tf)
tf.newFrame()
它应该从 Pillow 3 后期开始工作。4.x 版本(在我的机器上使用版本 5.1.0)。
资源:
首先 post 这里,虽然我已经花了几天时间在这里搜索各种查询。 Python3.6、Pillow和tiff处理
我想通过将一些图像从非常大调整为匹配 A4 格式来自动执行我们的一项手动任务。我们使用的是 tiff 格式,有时(经常)包含不止一页。所以我写道:
from PIL import Image,
...
def image_resize(path, dcinput, file):
dcfake = read_config(configlocation)["resize"]["dcfake"]
try:
imagehandler = Image.open(path+file)
imagehandler = imagehandler.resize((2496, 3495), Image.ANTIALIAS)
imagehandler.save(dcinput+file, optimize=True, quality=95)
except Exception:
但是非常(不)明显的是只有 tiff 的第一页被转换。这不完全是我对这个库的期望,但是我试图挖掘,并找到了一种从 tiff 中枚举每个页面并将其保存为单独文件的方法。
imagehandler = Image.open(path+file)
for i, page in enumerate(ImageSequence.Iterator(imagehandler)):
page = page.resize((2496, 3495), Image.ANTIALIAS)
page.save(dcinput + "proces%i.tif" %i, optimize=True, quality=95, save_all=True)
现在我可以使用 imagemagick 或一些内部命令将多个页面转换为一个页面,但这不是我想要做的,因为它会导致代码复杂化。
我的问题是,有没有独角兽可以帮助我:
1) 动态调整给定多页 tiff 的所有页面大小
2) 从几个争吵中建立一个争吵
我只想关注 python 模块。
谢谢
看看这个例子。它将使 TIF 文件的每一页缩小四倍(通过将每页的宽度和高度减半):
from PIL import Image
from PIL import ImageSequence
from PIL import TiffImagePlugin
INFILE = 'multipage_tif_example.tif'
OUTFILE = 'multipage_tif_resized.tif'
print ('Resizing TIF pages')
pages = []
imagehandler = Image.open(INFILE)
for page in ImageSequence.Iterator(imagehandler):
new_size = (page.size[0]/2, page.size[1]/2)
page = page.resize(new_size, Image.ANTIALIAS)
pages.append(page)
print ('Writing multipage TIF')
with TiffImagePlugin.AppendingTiffWriter(OUTFILE) as tf:
for page in pages:
page.save(tf)
tf.newFrame()
它应该从 Pillow 3 后期开始工作。4.x 版本(在我的机器上使用版本 5.1.0)。
资源: