在python中将tiff转换为jpeg

时间:2015-03-05 05:14:55

标签: python-2.7 jpeg python-imaging-library tiff

任何人都可以帮我阅读.tiff图像并转换为jpeg格式吗?

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

以上代码无效。

5 个答案:

答案 0 :(得分:14)

我已成功解决了这个问题。我发布了代码来读取文件夹中的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

答案 1 :(得分:1)

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)

答案 2 :(得分:1)

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

TIFF图像格式是各种格式的容器。它可以包含BMP,未压缩的TIFF,LZW压缩,Zip压缩等,其中包括JPG等。 image.read(来自PIL)打开这些文件,但无法对其进行任何操作。至少您可以发现它是TIFF文件(在内部,不仅是其名称)。然后可以使用 pytiff.Tiff(来自pytiff包)。由于某些原因,当tiff具有JPG压缩功能时(可能还有其他压缩方式),它无法编码正确的信息。

在丹麦(C),有些东西烂了

P.S。一个人可以借助Paint(在旧的Windows Paint Brush(在此状态下也变烂了)或Photoshop-任何版本)的帮助下转换文件。然后可以从Python打开它。我正在寻找可以做到的简单exe,将其称为来自python。可能是批量图片转换器会

答案 3 :(得分:0)

这可以在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 :(得分:-1)

尝试了以上所有参考文献后,将图像文件格式从.tif转换为.jpg,并遇到了包括OSError在内的各种问题,我实现了一个更简单,显而易见的方法更简单的方法。希望这对那些面临类似问题的人有所帮助。

import os
for filename in os.listdir(file_path):
    os.rename(file_path+filename, file_path+filename[:-3]+"jpg")

注意:如果您是从.tiff进行转换,请使用-4(而不是-3),并确保file_path的格式正确,并在末尾加正斜杠,例如MyFolder/ 另外,在运行代码之前,请确保没有其他文件实例在任何地方打开。