python将.tif转换为.png而不改变模式从cmyk到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?
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。