在python中将tiff转换为jpeg

Posted

技术标签:

【中文标题】在python中将tiff转换为jpeg【英文标题】:converting tiff to jpeg in python 【发布时间】:2015-03-05 05:14:54 【问题描述】:

谁能帮我阅读 .tiff 图像并转换成 jpeg 格式?

from PIL import Image
im = Image.open('test.tiff')
im.save('test.jpeg')

上面的代码不工作。

【问题讨论】:

嘿它的工作,它应该工作!看看这个小提琴:link 抱歉,我在读取 .tiff 文件时遇到了问题。谢谢 【参考方案1】:

我已经成功解决了这个问题。我发布了代码来读取文件夹中的 tiff 文件并自动转换为 jpeg。

import os
from PIL import Image

yourpath = os.getcwd()
for root, dirs, files in os.walk(yourpath, topdown=False):
    for name in files:
        print(os.path.join(root, name))
        if os.path.splitext(os.path.join(root, name))[1].lower() == ".tiff":
            if os.path.isfile(os.path.splitext(os.path.join(root, name))[0] + ".jpg"):
                print "A jpeg file already exists for %s" % name
            # If a jpeg is *NOT* present, create one from the tiff.
            else:
                outfile = os.path.splitext(os.path.join(root, name))[0] + ".jpg"
                try:
                    im = Image.open(os.path.join(root, name))
                    print "Generating jpeg for %s" % name
                    im.thumbnail(im.size)
                    im.save(outfile, "JPEG", quality=100)
                except Exception, e:
                    print e

【讨论】:

【参考方案2】:
import os, sys
from PIL import Image

我尝试直接保存为jpeg,但错误提示模式为P且与JPEG格式不兼容,因此您必须将其转换为RGB模式,如下所示。

for infile in os.listdir("./"):
    print "file : " + infile
    if infile[-3:] == "tif" or infile[-3:] == "bmp" :
       # print "is tif or bmp"
       outfile = infile[:-3] + "jpeg"
       im = Image.open(infile)
       print "new filename : " + outfile
       out = im.convert("RGB")
       out.save(outfile, "JPEG", quality=90)

【讨论】:

最佳答案为我生成了空的 jpeg 文件,但这个有效 通过这种方式转换图像时有没有办法保留元数据?示例:拍摄的相机、焦距等。【参考方案3】:

这可以在 OpenCV 的帮助下解决。它对我有用。 OpenCV 版本 == 4.3.0

import cv2, os
base_path = "data/images/"
new_path = "data/ims/"
for infile in os.listdir(base_path):
    print ("file : " + infile)
    read = cv2.imread(base_path + infile)
    outfile = infile.split('.')[0] + '.jpg'
    cv2.imwrite(new_path+outfile,read,[int(cv2.IMWRITE_JPEG_QUALITY), 200])

【讨论】:

【参考方案4】:

我相信所有的答案都不完整

TIFF 图像格式是各种格式的容器。它可以包含 BMP、TIFF 未压缩、LZW 压缩、Zip 压缩等,其中包括 JPG 等。 image.read(来自 PIL)打开这些文件,但不能对它们做任何事情。至少你可以发现它是一个 TIFF 文件(在里面,不仅仅是它的名字)。然后可以使用 pytiff.Tiff(来自 pytiff 包)。由于某些原因,当 tiff 具有 JPG 压缩(可能还有其他一些)时,它无法编码正确的信息。

丹麦(C)州有些东西已经烂了

附:可以在 Paint 的帮助下转换文件(在旧窗口 Paint Brush (在这种状态下也有些烂)或 Photoshop - 任何版本。然后可以从 Python 打开它我正在寻找可以做到这一点的简单 exe,调用它来自python。可能批量图像转换器会做

【讨论】:

以上是关于在python中将tiff转换为jpeg的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt 中将 tiff 或 pnm 转换为 jpeg

在 .NET 2.0 中将位图转换为一个多页 TIFF 图像

在node.js和GraphicsMagick中将tiff转换为jpeg

如何使用 Ghostscript 将 DOCX 或 DOC 文件转换为 TIFF 格式?

python 将SVS文件转换为TIFF图像

打开Tiff文件为啥显示为黑白色