Скопируйте метаданные EXIF из TIF в JPEG на C # / VB.NET
Вопрос
Я был бы очень признателен, если бы вы могли пролить свет на эту проблему.У меня есть 2 изображения, одно было создано из TIF-файла с метаданными, другое - изображение в памяти, которое будет сохранено в формате jpeg.Затем я использую эту процедуру для передачи метаданных exif из первого изображения во второе (то есть из файла, созданного из tif, в изображение в памяти):
For Each _p In image1.PropertyItems
image2.SetPropertyItem(_p)
Next
И это работает совершенно нормально.Все элементы exif успешно скопированы.Я подтвердил это, используя watches в режиме отладки.Проблема возникает, когда вы сохраняете image2 в формате jpeg, используя это:
Dim eps As EncoderParameters = New EncoderParameters(1)
eps.Param(0) = New EncoderParameter(Encoder.Quality, 85)
Dim ici As ImageCodecInfo = GetEncoderInfo("image/jpeg")
image2.Save("C:\1.jpg", ici, eps)
Однако в файле image2 jpeg сохраняется только очень мало свойств EXIF, а именно только модель камеры и производитель камеры.Однако, если я сохраню image2 как TIF, все свойства из исходного tif будут там.Кто-нибудь может объяснить, почему это так?
Спасибо.
Решение
Взгляните на Exiv2Sharp - эта оболочка вокруг Exiv2 должна предоставить то, что вы ищете.