Funktioniert jetzt.
Den ganzen Kram mit dem Pinnedobject konnte ich mir sparen und ist nicht nötig.
Der einzige Nachteil habe jetzt einen unsicheren Code .. was ich eigentlich nicht wollte. (unsafe)
bedingt durch die Konvertierung vom Image zum Pointer.
Wenn jemand eine Idee hat wie ich das anders machen kann. Nur zu!
Möchte das unsafe gern wieder entfernen.
Code:
byte[] openFile = File.ReadAllBytes(OpenFileDialog1.FileName);
fixed (byte* p = openFile)
{
IntPtr image = (IntPtr)p;
CoverArtData.Name = Marshal.StringToHGlobalAuto(Description);
CoverArtData.CoverType = 3;
CoverArtData.MIMEType = Marshal.StringToHGlobalAuto(MIMEType);
CoverArtData.Description = Marshal.StringToHGlobalAuto(Description);
CoverArtData.Width = Width;
CoverArtData.Height = Height;
CoverArtData.ColorDepth = ColorDepth;
CoverArtData.NoOfColors = NoOfColors;
CoverArtData.PictureFormat = CoverArtPictureFormat;
CoverArtData.Data = image;
CoverArtData.DataSize = BitmapStream.Length;
if (TagsLib.TagsLibrary_AddCoverArt(Tags, TTagType.ttAutomatic, CoverArtData) == -1)
{
MessageBox.Show("Error while adding cover art: ", OpenFileDialog1.FileName, MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error);
}
image = IntPtr.Zero;
BitmapStream.Close();
btnSave_MouseDown(sender, e);
}
gruss