Ejemplo n.º 1
0
        void Parse()
        {
            var encoding = (ID3v2EncodingType)m_Content[0];
            int index    = 1 + ID3v2Encoding.Parse(0, m_Content, 1, out m_MimeType);

            m_PictureType    = (ID3v2PictureType)m_Content[index++];
            index           += ID3v2Encoding.Parse(encoding, m_Content, index, out m_Description);
            m_ImageDataStart = index;
        }
Ejemplo n.º 2
0
        void Parse()
        {
            var encoding = (ID3v2EncodingType)Content[0];
            var index    = 1 + ID3v2Encoding.Parse(0, Content, 1, out mimeType);

            pictureType    = (ID3v2PictureType)Content[index++];
            index         += ID3v2Encoding.Parse(encoding, Content, index, out description);
            imageDataStart = index;
        }
Ejemplo n.º 3
0
 /// <summary>Gets the picture frame with the specified type.</summary>
 /// <param name="type">The type.</param>
 /// <returns></returns>
 public ID3v2APICFrame GetPictureFrame(ID3v2PictureType type)
 {
     foreach (var frame in GetFrames <ID3v2APICFrame>("APIC"))
     {
         if (frame.PictureType == type)
         {
             return(frame);
         }
     }
     return(null);
 }
Ejemplo n.º 4
0
        /// <summary>Creates the specified header.</summary>
        /// <param name="header">The header.</param>
        /// <param name="flags">The flags.</param>
        /// <param name="description">The description.</param>
        /// <param name="type">The type.</param>
        /// <param name="mimeType">Type of the MIME.</param>
        /// <param name="imageData">The image data.</param>
        /// <returns></returns>
        /// <exception cref="NotSupportedException"></exception>
        public static ID3v2APICFrame Create(ID3v2Header header, ID3v2FrameFlags flags, string description, ID3v2PictureType type, string mimeType, byte[] imageData)
        {
            ID3v2EncodingType encoding = ID3v2Encoding.Select(header, description + mimeType);

            // header, encoding[1], mimeType+0, pitureType[1], description+0, data
            byte[] descriptionBytes = ID3v2Encoding.GetBytes(encoding, description, true);
            byte[] mimeTypeBytes    = ID3v2Encoding.GetBytes(encoding, mimeType, true);
            int    contentSize      = descriptionBytes.Length + mimeTypeBytes.Length + 1 + 1 + imageData.Length;
            var    frameHeader      = ID3v2FrameHeader.Create(header, "APIC", flags, contentSize);

            using (var ms = new MemoryStream())
            {
                var writer = new DataWriter(ms);
                writer.Write(frameHeader.Data);
                writer.Write((byte)encoding);
                writer.Write(mimeTypeBytes);
                writer.Write((byte)type);
                writer.Write(descriptionBytes);
                writer.Write(imageData);
                if (frameHeader.HeaderSize + contentSize != ms.Position)
                {
                    throw new Exception();
                }

                return(new ID3v2APICFrame(new ID3v2Frame(header, ms.ToArray())));
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Creates a new header.
        /// </summary>
        /// <param name="header">The tag header.</param>
        /// <param name="flags">The flags.</param>
        /// <param name="description">The description.</param>
        /// <param name="type">The type.</param>
        /// <param name="image">The image.</param>
        /// <param name="imageFormat">The image format.</param>
        /// <param name="quality">The quality.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        public static ID3v2APICFrame Create(ID3v2Header header, ID3v2FrameFlags flags, string description, ID3v2PictureType type,
                                            SkiaSharp.SKImage image, SkiaSharp.SKEncodedImageFormat imageFormat = SkiaSharp.SKEncodedImageFormat.Jpeg, int quality = 99)
        {
            var    data = image.Encode(imageFormat, quality);
            string mimeType;

            switch (imageFormat)
            {
            case SkiaSharp.SKEncodedImageFormat.Jpeg: mimeType = MimeTypes.FromExtension(".jpg"); break;

            case SkiaSharp.SKEncodedImageFormat.Png: mimeType = MimeTypes.FromExtension(".png"); break;

            default: throw new ArgumentOutOfRangeException(string.Format("ImageFormat {0} not suppoerted!", imageFormat));
            }
            return(Create(header, flags, description, type, mimeType, data.ToArray()));
        }