Чтение определенных метаданных изображения эффективно с помощью javax.imageio - PullRequest
4 голосов
/ 18 июля 2011

Я пытаюсь прочитать PNG-изображение, используя javax.imageio, а затем извлечь метаданные глубины цвета и цвета.

Прямо сейчас я использую:

Iterator<ImageReader> itr = ImageIO.getImageReaders(stream);
while(itr.hasNext())
{
    ImageReader reader = itr.next();
    reader.setInput(stream);
    IIOMetadata md = reader.getImageMetadata(0);
}

Но после этого я застрял. Кажется, единственный способ прочитать метаданные - это преобразовать их в дерево XML, используя md.getAsTree, но итерируя по всему дереву, просто чтобы найти два поля, которые меня интересуют, кажется очень неэффективным.

Есть ли способ получить только эти поля эффективным способом (хеш-таблица или что-то в этом роде)?

1 Ответ

0 голосов
/ 15 марта 2014

Для чтения метаданных я использую sanselan (который в настоящее время вводится в общие Apache, но еще не завершен)

            ImageInfo image_info = Sanselan.getImageInfo(imageFile);
            int bitDepth = image_info.getBitsPerPixel();
            int colorType = image_info.getColorType();
...