繁体   English   中英

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

[英]python converting .tif to .png without changing mode from cmyk to rgb

我想将 .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 ?

PNG文件只有索引,灰色,RGB和RGBA模式。 那是文件格式,所以如果您需要CMYK,请使用其他文件格式,例如TIF。

我使用下一个代码来处理 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM