Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#21

AW: Memorystream vs TMemoryStream

  Alt 18. Apr 2015, 01:41
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
  Mit Zitat antworten Zitat