Exifinterface

odczytywanie i zapisywanie tagów EXIF pliku graficznego;
Ostatnia aktualizacja Wersja stabilna Wersja kandydująca Wersja Beta Wersja alfa
13 listopada 2024 r. 1.3.7 - - 1.4.0-alpha01

Deklarowanie zależności

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

Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle aplikacji lub modułu:

Groovy

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

Kotlin

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

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 zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

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

Wersja 1.4

Wersja 1.4.0-alpha01

13 listopada 2024 r.

androidx.exifinterface:exifinterface:1.4.0-alpha01 został zwolniony. Wersja 1.4.0-alpha01 zawiera te komisy.

Nowe funkcje

  • Dodaliśmy obsługę odczytu danych XMP z obrazów HEIF.
  • Dodaliśmy obsługę odczytu metadanych Exif i XMP z obrazów AVIF.

Zmiany w interfejsie API

  • Wskazanie, że parametr location dla setGpsInfo to @Nullable, a przekazanie wartości 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 osobnym segmentem XMP są przechowywane w tym samym osobnym segmencie XMP przez saveAttributes(), a nie zapisywane w tagu TIFF/Exif 700, który nie jest obsługiwany przez specyfikację XMP i gdzie wiele narzędzi nie będzie ich znajdować.
  • Podczas zapisywania nie dubluj danych XMP z osobnego segmentu w katalogu podglądu TIFF (b/309843390).
  • Poprawić dokładność konwersji liczb podwójnie wykładniczych na liczby ułamkowe. (b/312680558).
  • Akceptowanie formatu ułamkowego (x/y) w przypadku „starszych” tagów ułamkowych, które są automatycznie konwertowane na liczby dziesiętne po zwróceniu z getAttribute (b/312680558).setAttribute
  • Upewnij się, że dane XMP dodane do obrazu JPEG, który nie zawiera jeszcze XMP, są zapisywane w osobnym segmencie zgodnie ze specyfikacją XMP. ExifInterface jest udokumentowany jako preferujący XMP w tagu Exif 700 w obrazach JPEG (co narusza specyfikację), więc to zachowanie jest zachowane podczas odczytu i zapisu obrazów z istniejącymi danymi XMP.
  • Naprawić uszkodzony wynik podczas zapisywania obrazów WebP o wysokości lub szerokości większej niż 8191 pikseli (b/342697059).
  • Biblioteka ta korzysta teraz z adnotacji JSpecify dotyczących nullowania, które są używane w zależności od typu. Deweloperzy Kotlina powinni używać tych argumentów kompilatora, aby wymusić prawidłowe użycie: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I5cd0f, b/326456246)
  • Usunięto 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 z AGP 7.3 lub nowszym (np. R8 w wersji 3.3) oraz dla wszystkich kompilacji podczas korzystania z AGP 8.1 lub nowszego (np. D8 w wersji 8.1). Klienci, którzy nie korzystają z AGP, powinni zaktualizować D8 do 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.

androidx.exifinterface:exifinterface:1.3.7 został zwolniony. Wersja 1.3.7 zawiera te commity.

Poprawki błędów

  • Wyjątek z ExifInterface.saveAttributes() podczas próby zapisania zbyt dużego segmentu JPEG APP1 (wcześniej zapisywaliśmy nieprawidłowy segment APP1 o nieprawidłowej, obciętej długości:(b/263747161)). Kontynuowanie analizowania po napotkaniu nieprawidłowego przesunięcia IFD (wcześniej analiza zatrzymywała się natychmiast, co mogło powodować zwracanie nieprawidłowych wartości: b/264729367).

Wersja 1.3.6

Wersja 1.3.6

8 lutego 2023 r.

androidx.exifinterface:exifinterface:1.3.6 został zwolniony. Wersja 1.3.6 zawiera te commity.

Poprawki błędów

  • Naprawiono odczyt bitu alfa z kawałków WebP VP8L (b/255405635).

Wersja 1.3.5

Wersja 1.3.5

24 października 2022 r.

androidx.exifinterface:exifinterface:1.3.5 został zwolniony. Wersja 1.3.5 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązanie 2 przypadków, w których saveAttributes() generował nieprawidłowe pliki WebP.

Wersja 1.3.4

Wersja 1.3.4

5 października 2022 r.

androidx.exifinterface:exifinterface:1.3.4 został zwolniony. 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 tworzenie uszkodzonych plików.

Wersja 1.3.3

Wersja 1.3.3

4 sierpnia 2021 r.

androidx.exifinterface:exifinterface:1.3.3 został zwolniony. Wersja 1.3.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błędy związane z analizowaniem tagów związanych z subsekundami. (aosp/1508143)
  • Zapobiegaj wyjątkowi RuntimeException podczas wywoływania metody setDataSource. (c8e66e9)
  • Zapobieganie nieskończonemu pętli w przypadku skipBytes. (fdbe88b)
  • Przechwyć wyjątek RuntimeException z MediaMetadataRetriever. (389b21a)
  • Dodanie obsługi zapisywania atrybutów w plikach DNG (3017dbc)
  • Zastąp tagi inne niż miniatury tagami miniatur. (e1b916d)

Wersja 1.3.2

Wersja 1.3.2

2 grudnia 2020 r.

androidx.exifinterface:exifinterface:1.3.2 został zwolniony. Wersja 1.3.2 zawiera te commity.

Poprawki błędów

  • Zezwalanie na SRATIONAL w przypadku GPS_LATITUDEGPS_LONGITUDE.
  • Dodano obsługę odczytu i zapisu w formacie dodatkowym (2020-01-01 00:00:00) tagu DateTime.
  • Zapobiega tymczasowemu usunięciu pliku źródłowego podczas wywołania funkcji saveAttribute().

Wersja 1.3.1

Wersja 1.3.1

14 października 2020 r.

androidx.exifinterface:exifinterface:1.3.1 został zwolniony. 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

androidx.exifinterface:exifinterface:1.3.0 został zwolniony. Wersja 1.3.0 zawiera te commity.

Najważniejsze zmiany od wersji 1.2.0

  • Rozszerzona obsługa zapisu WebP EXIF, aby obejmować 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 z obrazami.
  • Użytkownik INVALID_DATE_TIME został usunięty. Zamiast tego użyj funkcji NULL, aby zwrócić nieprawidłowe wartości daty i godziny.
  • W przypadku nieprawidłowej wartości funkcja getGpsDateTime zwraca wartość Long.MIN_VALUE zamiast -1.

Wersja 1.3.0-rc01

2 września 2020 r.

androidx.exifinterface:exifinterface:1.3.0-rc01 jest publikowany bez zmian od 1.3.0-beta01. Wersja 1.3.0-rc01 zawiera te commity.

Wersja 1.3.0-beta01

19 sierpnia 2020 r.

androidx.exifinterface:exifinterface:1.3.0-beta01 został zwolniony. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Rozszerzona obsługa zapisu WebP EXIF, aby obejmować pliki zawierające tylko fragmenty VP8 lub VP8L.

Zmiany w interfejsie API

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

Poprawki błędów

  • Zmiana funkcji getGpsDateTime, aby zwracała wartość Long.MIN_VALUE zamiast -1, ponieważ -1 jest prawidłową wartością
  • Zmiana: metody pobierające wartości związane z DateTime uwzględniają 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 z obrazami.
  • Ustawianie domyślnego języka na angielski (USA)
  • Dodawanie „.tmp” do tworzenia plików tymczasowych zostało zastąpione przez dodawanie prefiksu.

Wersja 1.3.0-alpha01

19 lutego 2020 r.

androidx.exifinterface:exifinterface:1.3.0-alpha01 został zwolniony. 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.

androidx.exifinterface:exifinterface:1.2.0 został zwolniony. Wersja 1.2.0 zawiera te zatwierdzenia.

Najważniejsze zmiany od wersji 1.1.0

  • Dodaliśmy obsługę dodawania informacji EXIF do plików PNG.
  • Dodano obsługę plików WebP i strumienia danych EXIF
  • Dodano interfejs API do sprawdzania, czy podany typ mime jest obsługiwany.
  • Dodano więcej tagów dla przesunięcia czasu: TAG_OFFSET_TIME, TAF_OFFSET_TIME_DIGITIZED i TAG_OFFSET_TIME_ORIGINAL

Wersja 1.2.0-rc01

19 lutego 2020 r.

androidx.exifinterface:exifinterface:1.2.0-rc01 został zwolniony. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że pliki JPEG były zapisywane nieprawidłowo, jeśli zawierały dane XMP.

Wersja 1.2.0-beta01

18 grudnia 2019 r.

androidx.exifinterface:exifinterface:1.2.0-beta01 został zwolniony. Wersja 1.2.0-beta01 zawiera te zatwierdzenia:

Nowe funkcje

  • Dodaliśmy obsługę dodawania informacji EXIF do plików PNG.
  • Dodaliśmy obsługę odczytu i zapisu danych EXIF z plików WebP.
  • Dodano obsługę strumienia tylko z danymi EXIF.

Zmiany w interfejsie API

  • Dodano interfejs API do sprawdzania, czy podany typ mime jest obsługiwany.
  • tagi OffsetTime* do odczytu i zapisu;

Poprawki błędów

  • Rozwiązaliśmy problem z zwracaniem nieprawidłowych przesunięć w przypadku funkcji getAttributeRange().

Wersja 1.1.0

Wersja 1.1.0

20 listopada 2019 r.

androidx.exifinterface:exifinterface:1.1.0 został zwolniony. Wersja 1.1.0 zawiera te zatwierdzenia:

Ważne zmiany od wersji 1.0.0

  • Obsługa formatu HEIF i więcej tagów XMP
  • Dodano obsługę tworzenia obiektu ExifInterface z obiektu File lub FileDescriptor
  • Dodaliśmy więcej metod uzyskiwania atrybutów: hasAttribute, getAttributeBytes i getAttributesRange

Wersja 1.1.0-rc01

9 października 2019 r.

androidx.exifinterface:exifinterface:1.1.0-rc01 został zwolniony. Wersja 1.1.0-rc01 zawiera te zatwierdzenia:

Poprawki błędów

  • Dodano brakujący format nazwy (IFD), aby zapobiec ArrayIndexOutOfBoundsException w loadAttributes
  • zapobieganie usunięciu pliku źródłowego, gdy podczas wywołania funkcji saveAttributes wystąpi wyjątek;
  • Rozwiązaliśmy problem z wyjątkami, gdy po zastąpieniu pliku następuje wywołanie funkcji saveAttributes().

Wersja 1.1.0-beta01

2 lipca 2019 r.

androidx.exifinterface:exifinterface:1.1.0-beta01 został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Wyrzuca błąd NullPointerException, gdy argument null ma wartość null.@NonNull
  • 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 wyciekom pamięci w przypadku deskryptorów plików

Wersja 1.1.0-alpha01

13 marca 2019 r.

androidx.exifinterface:exifinterface:1.1.0-alpha01 został zwolniony. Pełną listę zatwierdzeń zawartych w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Obsługa formatu HEIF

Zmiany w interfejsie API

  • Dodano więcej konstruktorów interfejsu Exif
  • Poprawiono błąd pisowni: TAG_CAMARA_OWNER_NAME -> TAG_CAMERA_OWNER_NAME

Poprawki błędów

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