2015-09-17 2 views
1

я ищу библиотеку или определенную функцию в Python для чтения и записи exif metadata из TIFF изображения с помощью цифровой камерычтения и записи EXIF ​​метаданных в Python из TIF изображения

Мой образ в 16-битном формате TIFF формат имеет последующие приличий, идентифицироваться с ImageMagick:

Properties: 
date:create: 2015-09-02T16:01:49-06:00 
date:modify: 2015-09-02T18:00:37-06:00 
exif:ExposureTime: 0.00125 
exif:FNumber: 2.8 
exif:FocalLength: 16 
exif:ISOSpeedRatings: 400 
signature: e72808cba367184ab5c8f9c06d52701c7850e114155676857d2912b4743f243a 
tiff:alpha: unspecified 
tiff:artist: 
tiff:endian: lsb 
tiff:make: Sony 
tiff:model: NEX-7 
tiff:photometric: RGB 
tiff:rows-per-strip: 1 
tiff:software: dcraw v9.25 
tiff:timestamp: 2014:07:28 08:34:56 

если я читать и писать на Python с comumn libreries (ов: tifffile) я потерять мои метаданные

import tifffile as tiff 
from skimage import io 
myimage = 'C:\\foo.tiff' 
image = tiff.imread(myimage) 
io.imsave("C:\\foo_new.tiff", image) 

форма ImageMagick

Properties: 
date:create: 2015-09-17T15:58:07-06:00 
date:modify: 2015-09-17T16:00:34-06:00 
signature: e72808cba367184ab5c8f9c06d52701c7850e114155676857d2912b4743f243a 
tiff:alpha: unspecified 
tiff:endian: lsb 
tiff:photometric: RGB 
tiff:rows-per-strip: 1 
tiff:software: tifffile.py 
tiff:timestamp: 2015:09:17 16:00:27 

ответ

2

Вы можете использовать Wand:

from wand.image import Image 

with Image(filename='test.tif') as image: 
    for k, v in image.metadata.items(): 
     print("{}: {}".format(k, v)) 

    image.save(filename='copy.tif') 
+0

Спасибо. Но, например, если я хочу изменить свои данные (например: от 16 до 8 бит), могу ли я сделать с этой библиотекой? –

+0

'Wand' - это оболочка вокруг ImageMagick', поэтому, если вы можете создать командную строку, которая работает с вашими файлами, тогда должно быть возможно написать код Python с теми же возможностями. Например, попробуйте манипулировать значением [Image.depth] (http://docs.wand-py.org/en/0.4.1/wand/image.html#wand.image.BaseImage.depth). – Nykakin

+0

'Wand' не поддерживает запись метаданных, поэтому это не решение для этого вопроса. – Petri