【问题标题】:Issue when trying to get a multipage .tiff documents from a list of .tiff page using Image.save(..save_all=True,append_images=[..])尝试使用 Image.save(..save_all=True,append_images=[..]) 从 .tiff 页面列表中获取多页 .tiff 文档时出现问题
【发布时间】:2017-01-22 04:14:54
【问题描述】:

[自最初的问题以来,许多事情都已解决。请参阅下面的 cmets。最终文件仍然只包含第一页,我没有看到任何警告或错误消息]

我看到最近版本的 Pillow 添加了对保存多页图像的支持,尤其是。带有 im_all.save('test.tiff', save_all=True) 的 TIFF。

现在我不清楚应该如何使用要放在一起的 .tiff 页面列表来创建多页 .tiff。我在文档中找不到示例或某些指示。我需要将每个图像的大小调整为最终文档的大小吗?我用我的 B&W .tiff 做了一个简单的测试,它的模式是“1”

list_im=[]
im_all=Image.new("1", (2500, 3500))
for i in list_file:
     print i
     im = Image.open(path_tmp+'/'+i)
     print im.format, im.size, im.mode
     list_im.append(im)
     im.close()

im_all.save('test.tiff', save_all=True,append_images=list_im)

但我收到了错误消息

42526530005_632__0.tiff
TIFF (2445, 3472) 1
42526530005_632__1.tiff
TIFF (2448, 3474) 1
42526530005_632__2.tiff
TIFF (2451, 3471) 1
42526530005_632__3.tiff
TIFF (2454, 3471) 1
42526530005_632__4.tiff
TIFF (2459, 3471) 1
42526530005_632__5.tiff
TIFF (2467, 3472) 1
42526530005_632__6.tiff
TIFF (2452, 3471) 1
Traceback (most recent call last):
  File "master_cost_claims_analyser.py", line 1401, in <module>
    main()
  File "master_cost_claims_analyser.py", line 1398, in main
    args.all_steps)
  File "master_cost_claims_analyser.py", line 565, in cost_claim_analyser_main
    verbose)
  File "H:/DATA/Projects and Documents/Projects/ClaimsCostAnalyzer/ClaimsCostAnalyzerCode/ClaimsExtraction/get_claims_functions.py", line 176, in get_claims
    im_all.save('test.tiff', save_all=True,append_images=list_im)
  File "C:\Program Files\Anaconda2\lib\site-packages\PIL\Image.py", line 1679, in save
    save_handler = SAVE_ALL[format.upper()]
KeyError: 'TIFF'

我正在使用 蟒蛇2.7.12 枕头3.2.0

有人知道我们如何在多页 .tiff 文档中保存 .tiff 页面列表吗?我想我做错了什么。

谢谢

法比恩

【问题讨论】:

  • 您的代码被截断。请补充缺失的部分。
  • 我添加了缺少的“(”,但这是与我的问题相关的一小部分代码。我添加了完整的日志。谢谢
  • 好吧,我没有意识到这个新功能只是在最新版本中引入的。使用 Pillow 3.4.2 有点帮助。我还添加了 im.load() 而不是 im.close() 以确保与文件的连接已关闭。 Windows im.close() 没有关闭连接,Windows 抱怨它被另一个应用程序使用。我现在唯一遇到的问题是我的最终文件只有 1 页,全黑,大小比所有页面加起来大 10 倍!没有线索。我的新文件不是以正确的方式创建的吗?
  • 我在 python 3.4 上升级到 Pillow-3.4.2 并且我遇到了同样的错误。好吧,你能edit你的问题吗,因为你的评论完全改变了它现在没有多大意义。我会看看问题是否准确。
  • 您好 Jean-Francois,您遇到了哪个错误?对我来说,我没有收到错误,但我得到的是初始文件(im_all=Image.new("1", (2500, 3500)) 确实正在创建一个完整的后页)。如果我用作列表中的第一个文件并尝试使用 Image.save(..save_all=True,append_images=[..]) 添加另一个文件,我只会得到第一个文件。好的,我可以尝试改写一下这个问题,但我的目标是一样的。

标签: python-2.7 tiff pillow multipage


【解决方案1】:

按照此处link 的建议进行以下工作:

with PIL.TiffImagePlugin.AppendingTiffWriter("./test.tiff",True) as tf:
for tiff_in in list_file: with open(tiff_in) as tiff_in: im= Image.open(tiff_in) im.save(tf) tf.newFrame()

我正在使用枕头 4.0.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多