Search code examples
pythonpython-imaging-libraryexif

Preserve exif data of image with PIL when resize(create thumbnail)


When I try to resize (thumbnail) an image using PIL, the exif data is lost.

What do I have to do preserve exif data in the thumbnail image? When I searched for the same, got some links but none seem to be working.

from PIL import  Image
import StringIO

file_path = '/home/me/img/a.JPG'
im = Image.open( file_path)
THUMB_SIZES = [(512, 512)]
for thumbnail_size in THUMB_SIZES:
    im.thumbnail( thumbnail_size, Image.ANTIALIAS)
    thumbnail_buf_string = StringIO.StringIO()
    im.save('512_' + "a", "JPEG")

The orginal image has exif data, but image im(512_a.JPEG) doesn't.


Solution

  • import pyexiv2
    from PIL import  Image
    
    file_path = '/home/../img/a.JPG'
    metadata = pyexiv2.ImageMetadata(file_path)
    metadata.read()
    thumb = metadata.exif_thumbnail
    thumb.set_from_file(file_path)
    thumb.write_to_file('512_' + "a")
    thumb.erase()
    metadata.write()
    

    Now I open the image using (Patch Image Inspector) , I can see the exif data