Я использую следующий код, чтобы повернуть изображение JPG на 180 градусов, обновив заголовок EXIF. Я хочу избежать перекодирования изображения:
import PIL
import piexif
filename = "somefile.jpg"
img = PIL.Image.open(filename)
exif_dict = piexif.load(img.info['exif'])
exif_dict["0th"][274] = 3 #180 deg rotate
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, filename)
Кажется, это работает (Windows может открыть изображение, и изображение соответственно повернуто) Основная проблема заключается в том, что заголовок JFIF кажется потерянным:
теоретически, если бы вы знали, как найти это значение непосредственно в файле, вы могли бы использовать f = open(filename, "a")
в режиме добавления, использовать f.seek(pos, 0)
для перехода к позиции в файле, f.write(3)
для записи этого значения3
, f.close()
для его закрытия.
@Марк, к твоему сведению, я ответил на языке Python.
Вы не можете сделать это с библиотекой piexif, как вы можете видеть в здесь . Используйте другие библиотеки. Ниже приведен пример использования библиотеки exif.
import exif
with open('src.jpg', 'rb') as sf, open('dest.jpg', 'wb') as df:
img = exif.Image(sf)
img.orientation = 3
df.write(img.get_file())
Может быть, попробуйте
jpegtran
linux.die.net/man/1/jpegtran