Converting Tiff To Jpeg In Python
Solution 1:
I have successfully solved the issue. I posted the code to read the tiff files in a folder and convert into jpeg automatically.
import os
from PIL import Image
yourpath = os.getcwd()
for root, dirs, files inos.walk(yourpath, topdown=False):
for name in files:
print(os.path.join(root, name))
ifos.path.splitext(os.path.join(root, name))[1].lower() == ".tiff":
ifos.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
Solution 2:
import os, sys
fromPILimportImage
I tried to save directly to jpeg but the error indicated that the mode was P and uncompatible with JPEG format so you have to convert it to RGB mode as follow.
for infile inos.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)
Solution 3:
This can be solved with the help of OpenCV. It worked for me. OpenCV version == 4.3.0
import cv2, os
base_path = "data/images/"
new_path = "data/ims/"for infile inos.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])
Solution 4:
I believe all the answers are not complete
TIFF image format is a container for various formats. It can contain BMP, TIFF noncompressed, LZW compressions, Zip compressions and some others, among them JPG etc. image.read (from PIL) opens these files but cant't do anything with them. At least you can find out that it is a TIFF file (inside, not only by its name). Then one can use pytiff.Tiff (from pytiff package). For some reasons, when tiff has JPG compression (probably, some others too) it cannot encode the correct information.
Something is rotten in the state of Denmark (C)
P.S. One can convert file with help of Paint (in old windows Paint Brush (Something is rotten in this state too) or Photoshop - any version. Then it can be opened from PythonI'm looking for simple exe which can do it, the call it from python. Probably Bulk Image Converter will do
Post a Comment for "Converting Tiff To Jpeg In Python"