Как узнать обложку медиафайла? - 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д