2015-08-18 148 views
0

我使用JAudioTagger從音樂文件中獲取元數據,獲得標題,年份等工作正常,但是我在獲取封面藝術時遇到問題。我一直無法找到任何在線搜索的例子,任何幫助將是偉大的!從Java音樂文件中使用JAudioTagger獲取封面藝術

這裏是我當前的代碼,其中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(); 

它返回MP3的firstArtwork(這在大多數情況下,你正在尋找的封面)。如有必要,可以將其轉換爲BufferedImage。