/** @return list of artwork images */ public List<Artwork> getArtworkList() { List<Artwork> artworkList = new ArrayList<Artwork>(1); // Read Old Format if (getArtworkBinaryData() != null & getArtworkBinaryData().length > 0) { Artwork artwork = new Artwork(); artwork.setMimeType(getArtworkMimeType()); artwork.setBinaryData(getArtworkBinaryData()); artworkList.add(artwork); } // New Format (Supports Multiple Images) List<TagField> metadataBlockPics = this.get(VorbisCommentFieldKey.METADATA_BLOCK_PICTURE); for (TagField tagField : metadataBlockPics) { try { byte[] imageBinaryData = Base64Coder.decode(((TagTextField) tagField).getContent()); MetadataBlockDataPicture coverArt = new MetadataBlockDataPicture(ByteBuffer.wrap(imageBinaryData)); Artwork artwork = Artwork.createArtworkFromMetadataBlockDataPicture(coverArt); artworkList.add(artwork); } catch (IOException ioe) { throw new RuntimeException(ioe); } catch (InvalidFrameException ife) { throw new RuntimeException(ife); } } return artworkList; }
/** * Create Artwork field * * @param artwork * @return * @throws FieldDataInvalidException */ public TagField createField(Artwork artwork) throws FieldDataInvalidException { try { char[] testdata = Base64Coder.encode(createMetadataBlockDataPicture(artwork).getRawContent()); String base64image = new String(testdata); TagField imageTagField = createField(VorbisCommentFieldKey.METADATA_BLOCK_PICTURE, base64image); return imageTagField; } catch (UnsupportedEncodingException uee) { throw new RuntimeException(uee); } }
/** * Create artwork field using the non-standard COVERART tag * * <p>Actually create two fields , the data field and the mimetype. Its is not recommended that * you use this method anymore. * * @param data raw image data * @param mimeType mimeType of data * <p> * @return */ @Deprecated public void setArtworkField(byte[] data, String mimeType) { char[] testdata = Base64Coder.encode(data); String base64image = new String(testdata); VorbisCommentTagField dataField = new VorbisCommentTagField(VorbisCommentFieldKey.COVERART.getFieldName(), base64image); VorbisCommentTagField mimeField = new VorbisCommentTagField(VorbisCommentFieldKey.COVERARTMIME.getFieldName(), mimeType); setField(dataField); setField(mimeField); }
/** * Retrieve artwork raw data when using the deprecated COVERART format * * @return */ public byte[] getArtworkBinaryData() { String base64data = this.getFirst(VorbisCommentFieldKey.COVERART); byte[] rawdata = Base64Coder.decode(base64data.toCharArray()); return rawdata; }