2015-08-18 6 views
0

Я использую JAudioTagger для извлечения метаданных из музыкальных файлов, получения заголовка, года и т. Д. Работает нормально, но у меня возникла проблема с получением обложки. Мне не удалось найти какие-либо примеры в Интернете, любая помощь будет замечательной!Получить обложку из музыкального файла с помощью JAudioTagger в Java

Вот мой текущий код, который CoverArt BufferedImage отображается как null при отладке. Я проверил, и mp3-файл имеет обложку.

ID3v23Tag id3v23Tag = (ID3v23Tag)tag; 
    TagField coverArtField = 
    id3v23Tag.getFirstField(org.jaudiotagger.tag.id3.ID3v23FieldKey.COVER_ART.getFieldName()); 
    FrameBodyAPIC body = (FrameBodyAPIC)((ID3v23Frame)coverArtField).getBody(); 
    byte[] imageRawData = (byte[])body.getObjectValue(DataTypes.OBJ_PICTURE_DATA); 
    coverArt = ImageIO.read(ImageIO.createImageInputStream(new ByteArrayInputStream(imageRawData))); 

ответ

0

Обычно, самый простой способ это просто:

List<Artwork> existingArtworkList = tag.getArtworkList(); 

Вам не нужно выполнять какие-либо отливку, ни работу на уровне тела кадра. Есть ли причина, по которой вы это делаете?

Взгляните на imageRawData - это правильно? Возможно, проблема находится на уровне изображения. Если это JPEG, он должен начать, например, 0xFF, 0xD8.

2

В моем приложении я использую

MP3File mp3;  
mp3.getTag().getFirstArtwork(); 

который возвращает firstArtwork в формате MP3 (который в большинстве случаев покрытие вы ищете). Это может быть приложено к BufferedImage, если необходимо.