Xamarin ExifInterface.SaveAttributes перезаписывает изображение без данных изображения

#android #xamarin #exif

#Android #xamarin #exif

Вопрос:

Я открываю ранее сохраненное изображение и записываю несколько атрибутов на основе данных, которые поступают чуть позже в процессе. Когда я сохраняю атрибуты, изображение перезаписывается (чего я и ожидал). Однако все данные изображения отсутствуют, и это только информация заголовка. Я что-то упустил?

             ExifInterface exif = new ExifInterface(m_LastPictureName);
            exif.SetAttribute(ExifInterface.TagArtist, "xxxx");
            exif.SaveAttributes();  // Currently this is dropping ALL image data but saving only EXIF information - why???
  

Спасибо, что посмотрели.

Комментарии:

1. вы читали заметку здесь? developer.android.com/reference/android/media /…

2. Я ценю ответ, но после этого нет вызовов get ***. Как только вызывается SaveAttributes(), я вижу, что размер файла увеличивается с ~ 15 КБ до 35 байт.

3. не это, это: «Это дорого, потому что это включает копирование всех данных из одного файла в другой, удаление старого файла и переименование другого. Лучше всего использовать setAttribute »

4. О. Да, я видел это, поэтому я ожидал, что изображение будет «перезаписано». Я вижу, изменился ли размер, но имя осталось прежним. Мой вопрос в том, куда идут все остальные данные? Я делаю что-то не так, чтобы не сохранять что-то вручную? Мне кажется, что SaveAttributes() должен обрабатывать все необходимое.

5. Теперь у меня включен дополнительный вывод, и я вижу это: ExifInterface(20159): пропустить запись тега, поскольку номер тега не определен: 2 ExifInterface(20159): остановить чтение файла, поскольку неправильное смещение может привести к бесконечному циклу: 0

Ответ №1:

Мое исправление заключалось в установке Android.Поддержка.Media.ExifInterface вместо Android.Медиафайлы.ExifInterface.

Комментарии:

1. Вы можете отметить этот ответ позже, что поможет большему количеству людей с такой же проблемой :).