2008-12-08 30 views
0

我需要在C#與封面標記MP3文件...

有沒有簡單的方法來做到這一點?我發現UltraID3Lib是一個考試,它對於常規ID3標籤非常棒,但我無法處理封面藝術。如果有人知道一個簡單的方法來做到這一點,將是巨大的:)MP3封面標註在C#

回答

2

我這樣做this

private static void FixAlbumArt(FileInfo MyFile) 
{ 
    //Find the jpeg file in the directory of the Mp3 File 
    //We will embed this image into the ID3v2 tag 
    FileInfo[] fiAlbumArt = MyFile.Directory.GetFiles("*.jpg"); 
    if (fiAlbumArt.Length < 1) 
    { 
    Console.WriteLine("No Album Art Found in {0}", MyFile.Directory.Name); 
    return; 
    } 
    string AlbumArtFile = fiAlbumArt[0].FullName; 

    //Create Mp3 Object 
    UltraID3 myMp3 = new UltraID3(); 
    myMp3.Read(MyFile.FullName); 
    ID3FrameCollection myArtworkCollection = 
    myMp3.ID3v23Tag.Frames.GetFrames(MultipleInstanceFrameTypes.Picture); 

    if (myArtworkCollection.Count > 0) 
    {//Get Rid of the Bad Embedded Artwork 
    #region Remove All Old Artwork 
    for (int i = 0; i < myArtworkCollection.Count; i++) 
    { 
     ID3PictureFrame ra = (ID3PictureFrame)myArtworkCollection[0]; 
     try 
     { 
     myMp3.ID3v23Tag.Frames.Remove(FrameTypes.Picture); 
     } 
     catch { } 
    } 
    myArtworkCollection.Clear(); 

    //Save out our changes so that we are working with the 
    //most up to date file and tags 
    myMp3.ID3v23Tag.WriteFlag = true; 
    myMp3.Write(); 
    myMp3.Read(MyFile.FullName); 
    #endregion Remove All Old Artwork 
    } 
    //Create a PictureFrame object, pointing it at the image on my PC 
    ID3PictureFrame AlbumArt = 
    new ID3PictureFrame(
    (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile(AlbumArtFile), 
    PictureTypes.CoverFront, "Attached picture", TextEncodingTypes.ISO88591); 
    myMp3.ID3v23Tag.Frames.Add(AlbumArt); 
    myMp3.ID3v23Tag.WriteFlag = true; 
    myMp3.Write(); 

    myMp3 = null; 
} 

我在工作時忘了打開FolderShare上,所以我不能告訴你我修剪過的版本中,我傳遞了一個Image對象,但是這裏有一切你需要通過一些黑客手段完成工作。祝你好運。

+0

不錯,謝謝......我一回到家就會試一試,並留下評論:D – suxSx 2008-12-08 14:23:57

0

我無權訪問屬性ID3v23Tag = true; 所以我不能執行代碼myMp3.ID3v23Tag.WriteFlag = true;