Как узнать обложку медиафайла? - C#

Узнай цену своей работы

Формулировка задачи:

Использую WMPLib. Как узнать обложку mp3 файла? В идеале без использования TagLib.

Решение задачи: «Как узнать обложку медиафайла?»

textual
Листинг программы
using System;
using System.IO;
using System.Linq;
 
 
class SimpleExtractor
{
 
    // find position of subarray
    public static int GetPos(byte[] source, byte[] pattern)
    {
        for (int i = 0; i < source.Length; i++)
        {
            if (i + pattern.Length < source.Length)
            {
                byte[] result = new byte[pattern.Length];
                Array.Copy(source, i, result, 0, pattern.Length);
                if (result.
                    SequenceEqual(pattern))
                {
                    return i;
                }
            }
        }
        return -1;
    }
 
    // extract subarray
    public static bool GetSubArray(byte[] source, byte[] beg,
                                              byte[] end, out byte[] subArr)
    {
        int stPos = 0,
            finPos = 0;
             subArr = null;
 
        stPos = GetPos(source, beg);
 
        if (stPos != -1)
            if ((finPos = GetPos(source, end)) != -1)
            {
                finPos += end.Length;
                subArr = source.Skip(stPos).Take(finPos - stPos).ToArray();
                return true;
            }
       
        return false;
    }
 
    static void Main()
    {
        // JPEG signature 
        //-----------------------------------
        byte[] start = new byte[] { 0xFF, 0xD8, 0xFF, 0xE0 };    // start jpeg 
        byte[] end = new byte[] { 0xFF, 0xD9 };                  // end jpeg 
 
        try
        {
            // read file
            //-----------------------------------
            byte[] barray = File.ReadAllBytes("E:\\music\\Iggy_Azalea-Black_Widow_feat._Rita_Ora_.mp3");
 
            byte[] imgArr = null;
 
            //-----------------------------------
            // extract byte array of image
            if (GetSubArray(barray, start, end, out imgArr))
                // save to file      
                File.WriteAllBytes("D:\\NewImage.jpeg", imgArr);
        }
        catch (Exception ex)
        {
 
            Console.Write(ex.Message);
        }
 
        Console.ReadKey(true);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы