Используйте библиотеку Metadata-Extractor , чтобы прочитать метаданные файлов изображений.Приведенный ниже фрагмент кода можно использовать для чтения GifControlDirectory для каждого изображения (кадра) в файле GIF.
/**
* Get time length of GIF file in milliseconds.
*
* @return time length of gif in ms.
*/
public int getGifAnimatedTimeLength(String imagePath) {
Metadata metadata = ImageMetadataReader.readMetadata(imagePath);
List<GifControlDirectory> gifControlDirectories =
(List<GifControlDirectory>) metadata.getDirectoriesOfType(GifControlDirectory.class);
int timeLength = 0;
if (gifControlDirectories.size() == 1) { // Do not read delay of static GIF files with single frame.
} else if (gifControlDirectories.size() >= 1) {
for (GifControlDirectory gifControlDirectory : gifControlDirectories) {
try {
if (gifControlDirectory.hasTagName(GifControlDirectory.TAG_DELAY)) {
timeLength += gifControlDirectory.getInt(GifControlDirectory.TAG_DELAY);
}
} catch (MetadataException e) {
e.printStackTrace();
}
}
// Unit of time is 10 milliseconds in GIF.
timeLength *= 10;
}
return timeLength;
}
Обратите внимание, что даже если файл GIF имеет несколько кадров, вполне возможно, что каждый кадр может иметь задержку0 или нет метаданных TAG_DELAY.Кроме того, эта статья подробно описывает еще одну проблему того, как различные платформы используют значение задержки.