Meine Anwendung listet alle MP3s in einem Verzeichnis auf. Wenn der Benutzer eine Datei auswählt, lädt er die Tag-Informationen, einschließlich Albumcover. Die Grafik wird in eine Variable geladen, die verwendet werden soll, wenn der Benutzer die Daten speichert. Die Grafik wird auch in einen Bilderrahmen geladen, damit der Benutzer sie sehen kann.Albumcover mit TagLib sharp laden und dann in C# in einer anderen Datei speichern.
// Global to all methods
System.Drawing.Image currentImage = null;
// In method onclick of the listbox showing all mp3's
TagLib.File f = new TagLib.Mpeg.AudioFile(file);
if (f.Tag.Pictures.Length > 0)
{
TagLib.IPicture pic = f.Tag.Pictures[0];
MemoryStream ms = new MemoryStream(pic.Data.Data);
if (ms != null && ms.Length > 4096)
{
currentImage = System.Drawing.Image.FromStream(ms);
// Load thumbnail into PictureBox
AlbumArt.Image = currentImage.GetThumbnailImage(100,100, null, System.IntPtr.Zero);
}
ms.Close();
}
// Method to save album art
TagLib.Picture pic = new TagLib.Picture();
pic.Type = TagLib.PictureType.FrontCover;
pic.MimeType = System.Net.Mime.MediaTypeNames.Image.Jpeg;
pic.Description = "Cover";
MemoryStream ms = new MemoryStream();
currentImage.Save(ms, ImageFormat.Jpeg); // <-- Error occurs on this line
ms.Position = 0;
pic.Data = TagLib.ByteVector.FromStream(ms);
f.Tag.Pictures = new TagLib.IPicture[1] { pic };
f.save();
ms.Close();
Wenn ich das Bild laden und versuchen, es zu speichern sofort ich diese bekommen „Versuchte geschützte Speicher zu lesen oder schreiben. Dies ist häufig ein Hinweis darauf, dass andere Speicher beschädigt sind.“ Wenn ich versuche, currentImage als ImageFormat.Bmp zu speichern, bekomme ich Folgendes: "Ein generischer Fehler ist in GDI + aufgetreten."
meine Methode speichern funktioniert ordnungsgemäß, wenn ich ein Bild von einer URL wie folgt laden:
WebRequest req = WebRequest.Create(urlToImg);
WebResponse response = req.GetResponse();
Stream stream = response.GetResponseStream();
currentImage = Image.FromStream(stream);
stream.Close();
So vermute ich gibt es ein Problem mit der Art und Weise, dass ich das Bild in currentImage bin Laden, wenn der Benutzer Wählt eine MP3 aus der Listbox.
Ich habe viele Beispiele zum Laden und Speichern von Bildern in MP3s gefunden, aber niemand scheint dieses Problem zu haben, wenn sie versuchen, die Bilder sofort nach dem Laden zu speichern.
Danke für den Punkt in der richtigen Richtung. Ich habe meine Ergebnisse in einer anderen Antwort veröffentlicht, seit ich einen Code gepostet habe. – Ovin08
--------- Prost –