Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
GIF Animation bestmöglichst aus einem Bytearray laden?
BlackMatrix
myCSharp.de - Member



Dabei seit:
Beiträge: 218

Themenstarter:

GIF Animation bestmöglichst aus einem Bytearray laden?

beantworten | zitieren | melden

Hallo,

ich habe ein Bytearray, welches eine GIF Animation repräsentiert und möchte gerne alle einzelnen Frames in einzelne Bitmaps laden. Nun, trotz geschlossenem Stream scheint das Bitmap keine Bearbeitung zu vertragen und wohl auch ein heiß diskutiertes Thema im Netz. Aber wie lade ich nun denn am besten so ein Bitmap um anschließend auch noch ungestört meine "Bearbeitungen" durchzuführen? In Anführungszeichen deshalb, weil ich eigentlich nur die aktiven Frames selektiere und ich dahinter eigentlich keine Bearbeitung vermute.

Hier mein Code, der einen GDI+ Fehler wirft:


		private static void Main(string[] args)
		{
			var frames = GetFramesAsync("http://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_(large).gif").Result;
		}

		private static async Task<IEnumerable<Bitmap>> GetFramesAsync(string gifSource)
		{
			var client = new HttpClient();
			var bytes = await client.GetByteArrayAsync(gifSource);

			Image image;
			using (var ms = new MemoryStream(bytes, false))
			{
				image = Image.FromStream(ms);
			}

			var numberOfFrames = image.GetFrameCount(FrameDimension.Time);

			return Enumerable.Range(0, numberOfFrames).Select(i =>
			{
				image.SelectActiveFrame(FrameDimension.Time, i);
				return (Bitmap) image.Clone();
			}).ToArray();
		}

Viele Grüße

BlackMatrix
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3.170
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,
Zitat
Nun, trotz geschlossenem Stream scheint das Bitmap keine Bearbeitung zu vertragen
Nicht trotz, sondern wegen - Du musst den zugrundeliegenden MemoryStream offen lassen, während Du die Frames ausliest.

Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers