Exifinterface

odczytywać i zapisywać tagi EXIF w plikach graficznych;
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja Alfa
3 grudnia 2025 r. 1.4.2 - - -

Deklarowanie zależności

Aby dodać zależność od interfejsu Exifinterface, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w artykule Repozytorium Maven Google.

Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:

Odlotowe

dependencies {
    implementation "androidx.exifinterface:exifinterface:1.4.2"
}

Kotlin

dependencies {
    implementation("androidx.exifinterface:exifinterface:1.4.2")
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego problemu

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.4

Wersja 1.4.2

3 grudnia 2025 r.

Publikacja androidx.exifinterface:exifinterface:1.4.2 Wersja 1.4.2 zawiera te zmiany.

Poprawki błędów

  • Obsługa analizowania plików JPEG z dodatkowymi (dozwolonymi) bajtami 0xFF przed dowolnym znacznikiem.

Wersja 1.4.1

23 kwietnia 2025 r.

Publikacja androidx.exifinterface:exifinterface:1.4.1 Wersja 1.4.1 zawiera te zmiany.

Poprawki błędów

  • Usunęliśmy błąd, który powodował, że przekazanie wartości null do parametru setAttribute w przypadku parametru TAG_XMP powodowało zgłoszenie wyjątku.

Wersja 1.4.0

26 lutego 2025 r.

Publikacja androidx.exifinterface:exifinterface:1.4.0 Wersja 1.4.0 zawiera te zmiany.

Wersja 1.4.0-rc01

29 stycznia 2025 r.

androidx.exifinterface:exifinterface:1.4.0-rc01 została wydana bez zmian w porównaniu z wersją beta01. Wersja 1.4.0-rc01 zawiera te zmiany.

Wersja 1.4.0-beta01

15 stycznia 2025 r.

Publikacja androidx.exifinterface:exifinterface:1.4.0-beta01 Wersja 1.4.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

  • Zaktualizowano obsługę XMP w pliku HEIC, aby preferować dane XMP z osobnego segmentu w pliku zamiast tagu 700 w danych Exif.

Poprawki błędów

  • Poprawienie działania metody ExifInterface.getThumbnail*() po wywołaniu funkcji saveAttributes() (wcześniej wywołania się powodziły, ale wynik był nieprawidłowy lub niezdefiniowany).
  • Poprawiono obsługę XMP w PNG, aby odczytywać i zapisywać oddzielny fragment iTXt XMP zamiast tagu 700 w fragmencie eXIf.
  • Naprawienie problemu z uszkodzeniem obrazu WebP podczas obsługi plików graficznych z danymi innymi niż WebP na końcu. (b/385766064).

Wersja 1.4.0-alpha01

13 listopada 2024 r.

Publikacja androidx.exifinterface:exifinterface:1.4.0-alpha01 Wersja 1.4.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Dodaliśmy obsługę odczytywania danych XMP z obrazów HEIF.
  • Dodanie obsługi odczytywania danych Exif i XMP z obrazów AVIF.

Zmiany w interfejsie API

  • Wskaż, że parametr location dla setGpsInfo to @Nullable, a przekazanie null spowoduje brak działania. (If924c, b/236484611)

Poprawki błędów

  • Kontynuowanie analizowania po napotkaniu nieprawidłowego przesunięcia IFD (b/264729367).
  • Obsługa obrazów WebP, które nieprawidłowo zawierają znacznik JPEG APP1 przed danymi Exif (b/281638358).
  • Upewnij się, że zmiany XMP w plikach JPEG z oddzielnym segmentem XMP są przechowywane w tym samym oddzielnym segmencie XMP przez saveAttributes(), zamiast być zapisywane w tagu TIFF/Exif 700, który nie jest obsługiwany przez specyfikację XMP i w którym wiele narzędzi ich nie znajdzie.
  • Unikanie duplikowania danych XMP z osobnego segmentu w katalogu podglądu TIFF podczas zapisywania (b/309843390).
  • Poprawiono precyzję konwersji liczb zmiennoprzecinkowych na liczby wymierne. (b/312680558).
  • Akceptuj format ułamkowy (x/y) w przypadku „starszych” tagów ułamkowych, które są automatycznie konwertowane na format dziesiętny po zwróceniu z getAttribute (b/312680558).setAttribute
  • Upewnij się, że dane XMP dodane do obrazu JPEG, który nie zawiera jeszcze danych XMP, są zapisywane w osobnym segmencie zgodnie ze specyfikacją XMP. ExifInterface preferuje dane XMP w tagu Exif 700 w obrazach JPEG (co narusza specyfikację), więc to zachowanie jest zachowywane podczas odczytywania i zapisywania obrazów z istniejącymi danymi XMP.
  • Naprawiono uszkodzone dane wyjściowe podczas zapisywania obrazów WebP o wysokości lub szerokości większej niż 8191 pikseli (b/342697059).
  • Ta biblioteka korzysta teraz z adnotacji o wartości null JSpecify, które są używane w typie. Deweloperzy Kotlin powinni używać tego argumentu kompilatora, aby wymusić prawidłowe użycie: -Xjspecify-annotations=strict (jest to domyślny argument począwszy od wersji 2.1.0 kompilatora Kotlin). (I5cd0f, b/326456246)
  • Usunęliśmy ręczne określanie dostępu do nowych interfejsów API platformy, ponieważ odbywa się to automatycznie za pomocą modelowania interfejsu API podczas korzystania z R8 w AGP 7.3 lub nowszym (np. R8 w wersji 3.3) oraz w przypadku wszystkich kompilacji podczas korzystania z AGP 8.1 lub nowszego (np. D8 w wersji 8.1). Klientom, którzy nie korzystają z AGP, zalecamy przejście na D8 w wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (If6b4c, b/345472586)

Wersja 1.3.7

Wersja 1.3.7

13 grudnia 2023 r.

Publikacja androidx.exifinterface:exifinterface:1.3.7 Wersja 1.3.7 zawiera te zatwierdzenia.

Poprawki błędów

  • Wyrzucanie wyjątku z ExifInterface.saveAttributes() podczas próby zapisu zbyt dużego segmentu JPEG APP1 (wcześniej zapisywaliśmy nieprawidłowy segment APP1 z nieprawidłową, obciętą długością: b/263747161). Kontynuowanie analizowania po napotkaniu nieprawidłowego przesunięcia IFD (wcześniej analizowanie było natychmiast przerywane, co mogło powodować zwracanie nieprawidłowych wartości: b/264729367).

Wersja 1.3.6

Wersja 1.3.6

8 lutego 2023 r.

Publikacja androidx.exifinterface:exifinterface:1.3.6 Wersja 1.3.6 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiono odczytywanie bitu alfa z fragmentów WebP VP8L (b/255405635).

Wersja 1.3.5

Wersja 1.3.5

24 października 2022 r.

Publikacja androidx.exifinterface:exifinterface:1.3.5 Wersja 1.3.5 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono 2 przypadki, w których saveAttributes() generował nieprawidłowe pliki WebP.

Wersja 1.3.4

Wersja 1.3.4

5 października 2022 r.

Publikacja androidx.exifinterface:exifinterface:1.3.4 Wersja 1.3.4 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunięcie obsługi zapisywania atrybutów w plikach DNG. Obsługa dodana w wersji 1.3.3 była niekompletna i powodowała uszkodzenie plików.

Wersja 1.3.3

Wersja 1.3.3

4 sierpnia 2021 r.

Publikacja androidx.exifinterface:exifinterface:1.3.3 Wersja 1.3.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono analizowanie tagów związanych z podsekcjami. (aosp/1508143)
  • Zapobiega wystąpieniu wyjątku RuntimeException podczas wywoływania metody setDataSource. (c8e66e9)
  • Zapobiegaj nieskończonemu zapętlaniu skipBytes. (fdbe88b)
  • Obsługa wyjątku RuntimeException z klasy MediaMetadataRetriever. (389b21a)
  • Dodano obsługę zapisywania atrybutów w plikach DNG (3017dbc)
  • Zastąp tagi bez miniatur tagami z miniaturami. (e1b916d)

Wersja 1.3.2

Wersja 1.3.2

2 grudnia 2020 r.

Publikacja androidx.exifinterface:exifinterface:1.3.2 Wersja 1.3.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Zezwala na SRATIONAL w przypadku usług GPS_LATITUDEGPS_LONGITUDE.
  • Dodano obsługę odczytu i zapisu dodatkowego formatu (2020-01-01 00:00:00) tagu DateTime.
  • Zapobieganie tymczasowemu usunięciu pliku źródłowego podczas wywoływania funkcji saveAttribute().

Wersja 1.3.1

Wersja 1.3.1

14 października 2020 r.

Publikacja androidx.exifinterface:exifinterface:1.3.1 Wersja 1.3.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Popraw implementację saveAttributes, aby zachować dane obrazu w MediaProvider

Wersja 1.3.0

Wersja 1.3.0

16 września 2020 roku

Publikacja androidx.exifinterface:exifinterface:1.3.0 Wersja 1.3.0 zawiera te zatwierdzenia.

Główne zmiany od wersji 1.2.0

  • Rozszerzyliśmy obsługę zapisu EXIF w przypadku plików WebP, aby obejmowała pliki zawierające tylko fragmenty VP8 lub VP8L.
  • Usunięto niepotrzebne buforowanie, które powodowało wyjątki OutOfMemory w przypadku dużych plików obrazów.
  • Użytkownik INVALID_DATE_TIME został usunięty. Zamiast tego użyj NULL, aby zwracać nieprawidłowe wartości daty i godziny.
  • W przypadku nieprawidłowej wartości funkcja getGpsDateTime zwraca Long.MIN_VALUE zamiast -1.

Wersja 1.3.0-rc01

2 września 2020 r.

androidx.exifinterface:exifinterface:1.3.0-rc01 została opublikowana bez zmian od 1.3.0-beta01. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Wersja 1.3.0-beta01

19 sierpnia 2020 r.

Publikacja androidx.exifinterface:exifinterface:1.3.0-beta01 Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Rozszerzyliśmy obsługę zapisu EXIF w przypadku plików WebP, aby obejmowała pliki zawierające tylko fragmenty VP8 lub VP8L.

Zmiany w interfejsie API

  • Użytkownik INVALID_DATE_TIME został usunięty. Zamiast tego użyj NULL, aby zwrócić nieprawidłową wartość daty i godziny.

Poprawki błędów

  • Funkcja getGpsDateTime zwraca wartość Long.MIN_VALUE zamiast -1, ponieważ -1 jest prawidłową wartością.
  • W przypadku funkcji pobierających powiązanych z datą i godziną uwzględniono wartość przesunięcia (+/-) ciągu znaków daty.
  • Usunięto niepotrzebne buforowanie, które powodowało wyjątki OutOfMemory w przypadku dużych plików obrazów.
  • Ustaw domyślny język na angielski (Stany Zjednoczone)
  • Zastąpiono dodawanie „.tmp” podczas tworzenia plików tymczasowych dodawaniem prefiksu.

Wersja 1.3.0-alpha01

19 lutego 2020 r.

Publikacja androidx.exifinterface:exifinterface:1.3.0-alpha01 Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaliśmy nową metodę: ExifInterface.getGpsDateTime()

Wersja 1.2.0

Wersja 1.2.0

1 kwietnia 2020 r.

Publikacja androidx.exifinterface:exifinterface:1.2.0 Wersja 1.2.0 zawiera te zatwierdzenia.

Główne zmiany od wersji 1.1.0

  • Dodaliśmy obsługę dodawania EXIF do plików PNG
  • Dodaliśmy obsługę plików WebP i strumienia danych tylko EXIF.
  • Dodano interfejs API, który sprawdza, czy określony typ MIME jest obsługiwany.
  • Dodaliśmy więcej tagów czasu przesunięcia: TAG_OFFSET_TIME, TAF_OFFSET_TIME_DIGITIZED i TAG_OFFSET_TIME_ORIGINAL

Wersja 1.2.0-rc01

19 lutego 2020 r.

Publikacja androidx.exifinterface:exifinterface:1.2.0-rc01 Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że pliki JPEG były zapisywane nieprawidłowo, jeśli zawierały dane XMP.

Wersja 1.2.0-beta01

18 grudnia 2019 r.

Publikacja androidx.exifinterface:exifinterface:1.2.0-beta01 Wersja 1.2.0-beta01 zawiera te zmiany.

Nowe funkcje

  • Dodaliśmy obsługę dodawania EXIF do plików PNG
  • Dodaliśmy obsługę odczytu i zapisu danych EXIF z plików WebP
  • Dodaliśmy obsługę strumienia zawierającego tylko dane EXIF

Zmiany w interfejsie API

  • Dodano interfejs API, który sprawdza, czy określony typ MIME jest obsługiwany.
  • Udostępniliśmy tagi odczytu i zapisu OffsetTime*

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że w przypadku funkcji getAttributeRange() zwracane były nieprawidłowe przesunięcia.

Wersja 1.1.0

Wersja 1.1.0

20 listopada 2019 r.

Publikacja androidx.exifinterface:exifinterface:1.1.0 Wersja 1.1.0 zawiera te zmiany.

Ważne zmiany od wersji 1.0.0

  • Obsługa formatu HEIF i większej liczby tagów XMP
  • Dodano obsługę tworzenia obiektu ExifInterface z obiektu File lub FileDescriptor.
  • Dodano więcej metod pobierania atrybutu: hasAttribute, getAttributeBytes i getAttributesRange

Wersja 1.1.0-rc01

9 października 2019 r.

Publikacja androidx.exifinterface:exifinterface:1.1.0-rc01 Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodano brakującą nazwę formatu (IFD), aby zapobiec wystąpieniu błędu ArrayIndexOutOfBoundsException w przypadku loadAttributes
  • Zapobiega usunięciu pliku źródłowego, gdy podczas wywoływania funkcji saveAttributes wystąpi wyjątek.
  • Rozwiązaliśmy problem z wyjątkiem, który występował, gdy po zastąpieniu pliku wywoływano funkcję saveAttributes().

Wersja 1.1.0-beta01

2 lipca 2019 r.

Publikacja androidx.exifinterface:exifinterface:1.1.0-beta01 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Zwraca błąd NullPointerException, gdy dla argumentów @NonNull ustawiono wartość null
  • Obsługa tagów XMP

Zmiany w interfejsie API

  • Dodaliśmy więcej metod uzyskiwania informacji o atrybutach
  • hasAttribute, getAttributeBytesgetAttributesRange

Poprawki błędów

  • Zapobieganie wyciekowi pamięci deskryptora pliku

Wersja 1.1.0-alpha01

13 marca 2019 r.

Publikacja androidx.exifinterface:exifinterface:1.1.0-alpha01 Pełną listę zmian zawartych w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Obsługa formatu HEIF

Zmiany w interfejsie API

  • Dodano więcej konstruktorów klasy ExifInterface
  • Poprawiony błąd: TAG_CAMARA_OWNER_NAME -> TAG_CAMERA_OWNER_NAME

Poprawki błędów

  • Naprawiono sprawdzanie możliwego przepełnienia w przypadku miniatury obrazu (aosp/748608).