batch tiff to jpeg conversion script
Larry Bates
larry.bates at websafe.com
Wed Jan 11 15:01:20 EST 2006
rtilley at vt.edu wrote:
> Hope it's not inappropriate to post this here.
>
> Could someone critique my code? I have no Python programmers in my
> office to show this to. The script works OK, but should I do it
> differently? I especially don't like how I check to see if jpegs exist.
>
> The style may not be acceptable to some, but I'm concerned with
> substance, not style. Is there a 'more appropriate' way to do this?
>
> Thanks to all who take the time to give advice!
>
> -----------------------------------------------------------------
> import os
> import os.path
> #From PIL
> import Image
>
> def tiff_to_jpeg(path):
>
> for root, dirs, files in os.walk(path):
> for f in files:
> if os.path.splitext(os.path.join(root,f))[1].lower() ==
> ".tif":
>
> # If a jpeg is already present. Don't do anything.
> if
> os.path.isfile(os.path.splitext(os.path.join(root,f))[0] + ".jpg"):
> print "A jpeg file already exists for %s" %f
>
> # If a jpeg is *NOT* present, create one from the tiff.
> else:
> outfile = os.path.splitext(os.path.join(root,f))[0]
> + ".jpg"
> try:
> im = Image.open(os.path.join(root,f))
> print "Generating jpeg for %s" %f
> im.thumbnail(im.size)
> im.save(outfile, "JPEG", quality=100)
> except Exception, e:
> print e
>
> # Run Program
> path = '.'
> tiff_to_jpeg(path)
>
The methodology seems just fine. You may (or may not) find
the following code easier to read (not tested):
for f in [file for file in files if file.lower().endswith('.tif')]:
# If a jpeg is already present. Don't do anything.
filename, extension=f.split('.')
jpgfile="%s.jpg" % filename
jpgpath=os.path.join(root, jpgfile)
# If a jpeg is *NOT* present, create one from the tiff.
if not os.path.isfile(jpgpath):
try:
im = Image.open(os.path.join(root,f))
print "Generating jpeg for %s" % f
im.thumbnail(im.size)
im.save(jpgpath, "JPEG", quality=100)
except Exception, e:
print e
continue
print "A jpeg file already exists for %s" % f
This code:
1) only processess .tif files
2) simplifies things by eliminating the splitext methods and
slicing operations.
3) eliminates else branch
-Larry Bates
More information about the Python-list
mailing list