python将.tif转换为.png而不改变模式从cmyk到rgb

2 投票
2 回答
7622 浏览
提问于 2025-04-18 06:12

我想把.tif格式的文件转换成.png格式。我找到的一个简单方法是:

import Image

im = Image.open('39.tif')
im.save('39.png')

但是这个方法没有成功,给我报了以下错误:

Traceback (most recent call last):
  File "C:/Users/Marijus/Desktop/templates/rename.py", line 8, in <module>
    im.save('Foto.png')
  File "C:\Python27\lib\site-packages\PIL\Image.py", line 1441, in save
    save_handler(self, fp, filename)
  File "C:\Python27\lib\site-packages\PIL\PngImagePlugin.py", line 506, in _save
    raise IOError, "cannot write mode %s as PNG" % mode
IOError: cannot write mode CMYK as PNG

经过一点儿搜索,我发现如果想让这个方法有效,我需要把颜色模式从CMYK改成RGB。

if im.mode == "CMYK":
    im = im.convert("RGB")

这样做是成功了,不过颜色变了。我想知道有没有办法在不把颜色模式从CMYK改成RGB的情况下,把.tif转换成.png?

2 个回答

0

我用下面的代码来处理tiff格式的文件。

    from PIL import Image, ImageSequence

    image = Image.open(content)

    for i, page in enumerate(ImageSequence.Iterator(image), 1):
        filename = os.path.splitext(file_info.filename)
        page_name = "{}_{}{}".format(filename[0], i, ".png")
        page_bytes_io = io.BytesIO()
        page = page.convert("RGB")
        page.save(page_bytes_io, "png")
        page_bytes_io.seek(0)
        yield page_name, page_bytes_io, page
0

PNG文件只有四种颜色模式:索引色、灰度、RGB和RGBA。这就是PNG这种文件格式的特点。如果你需要使用CMYK颜色模式,那就得换一种文件格式,比如TIF。

撰写回答