Never been to DZone Snippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

« Newer Snippets
Older Snippets »
Showing 1-3 of 3 total  RSS 

Read & Write JPEG COM and EXIF metadata

This snippet is similar to my previous one.

import jpeg

#read/write JPEG comments (aka the COM area)
jpeg.getComments(file)
jpeg.setComments(txt, file)

#read/write some EXIF data
e = jpeg.getExif(file)   #an Exif object
e2 = jpeg.getExif2(file) #an Exif extension segment as Exif instance too

#quick getter
d = e.dict()
print d['image description']
e.display()  #function to print all tags and their value, type, etc.

#some tags with an explicit interface, some are writable
print e.description
e.description = "my nice picture"

#generic read function
print e.get(0x010e)  #value for a tag number you know
print e.get(0x010e, value=False) #get the tag as a Tag instance

#generic write function
e.set(0x010e, "my nice picture", e.ifd0, 2)
    #e.ifd0, e.exif, e.gps or e.interop, represents the IFD the tag belongs to
    #and 2 represents the fact that the tag is of ASCII type
    #see www.exif.org specifications for details

#iterate
for tag in e:
   print tag.getValue() #value parsed
   print tag.value      #value raw
   tag.setValue(100)    #change it

#save the changed Exif segment back into the image file
jpeg.setExif(e, file) 

See more details, and download the module here.

Reading and writing image metadata

The IPTCInfo module allows you to add/edit metadata
to your image. You can download it from here.

Reading
from iptcinfo import IPTCInfo
info = IPTCInfo('test.jpg')
print info.keywords, info.supplementalCategories, info.contacts
caption = info.data['caption/abstract']

Add/Edit
info = IPTCInfo('test.jpg')
info.data['caption/abstract'] = 'Witty caption here'
info.data['supplemental category'] = ['portrait']
info.save()
info.saveAs('test_out.jpg')  # keep original safe

Installing libjpeg on OS X

Get http://www.ijg.org/files/jpegsrc.v6b.tar.gz, and then:

tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b
cp /usr/share/libtool/config.sub .
cp /usr/share/libtool/config.guess .
./configure --enable-shared --enable-static
make
sudo make install
sudo ranlib /usr/local/lib/libjpeg.a
« Newer Snippets
Older Snippets »
Showing 1-3 of 3 total  RSS