Laden...

C# Bild aus resource lokal speichern

Erstellt von TrisiT vor 13 Jahren Letzter Beitrag vor 13 Jahren 5.618 Views
T
TrisiT Themenstarter:in
2 Beiträge seit 2010
vor 13 Jahren
C# Bild aus resource lokal speichern

Hallo Liebes Forum.
Ich möchte bei meinem Programm über

        [DllImport("user32.dll")]
        private static extern Int32 SystemParametersInfo(UInt32 uiAction, UInt32 uiParam, String pvParam, UInt32 fWinIni);

        private static UInt32 SPI_SETDESKWALLPAPER = 20;
        private static UInt32 SPIF_UPDATEINIFILE = 0x1;

mit dem Befehl

            string Filename = "pfad/1.jpg";
            SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Filename, SPIF_UPDATEINIFILE);

das Hintergrundbil ändern.

Nun möchte ich das aber mit einem Bild aus dem Resource Ordner tun.
Wie kann ich das in die tat um setzen?
Lokal speichern mit diesem Befehl:

System.IO.File.WriteAllBytes("C:/2.jpg", MeinProjekt.Properties.Resources._2);

kann ich die Bilder nicht da diese Fehlermeldung erscheint :

kann nicht von "System.Drawing.Bitmap" in "byte[]" konvertiert werden.

Für tipps und anmerkungen sind erwünscht 😃
Liebe Grüße,
Trisi

2.223 Beiträge seit 2005
vor 13 Jahren

Hallo Trisi und Herzlich Willkommen hier im Forum,

Die Fehlermeldung ist doch schon recht eindeutig, ein Object Bitmap ist nun mal kein byte[]

Hast Du Dir schon einmal die Methoden von dem Object Bitmap angeschaut?

Viele Grüße
Lars

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

wenn es dein Programm ist kannst du nicht einfacher das Hintergrundbild ändern als über die WinAPI? ZB über eine Eigenschaft innerhlab deines Programms?

Zum Speichern des Bildes: Lies das Bild in ein Image-Objekt und dort gibts dann die Save-Methode.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

C
2.121 Beiträge seit 2010
vor 13 Jahren

Du willst also den Typ Image in ein Bytearray kriegen.
Du kannst ein Bild mit image.Save in einen Stream schreiben. Schreibs in einen Memorystream und dann stream.ToArray (ich glaube das gibts).

2.223 Beiträge seit 2005
vor 13 Jahren

Hallo chilic,

Interessante Alternative, um ein Bitmap zu speichern,

warum dann erst der Umweg über das byte[]

@gfoidl soweit ich weiß, ist Bitmap von Image abgeleitet

Viele Grüße
Lars

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo Lars Schmitt,

@gfoidl soweit ich weiß, ist Bitmap von Image abgeleitet

ja das ist so. Ob Image od. Bitmap ist für die Save-Methode in diesem Fall egal - auf jedenfall ist es so einfacher und besser als die byte[] zu ermitteln und diese dann per FileStream zu schreiben.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

C
2.121 Beiträge seit 2010
vor 13 Jahren

Ja ok da habt ihr natürlich recht, das war Krampf.
Die ganzen Fakten drum rum haben irgendwie vom eigentlichen Problem abgelenkt. Ich hatte nur noch realisiert dass ein Bild in ein byte[] gewandelt werden soll, ohne zu wissen wozu eigentlich.

T
TrisiT Themenstarter:in
2 Beiträge seit 2010
vor 13 Jahren

Danke für die rasanten Antworten 😃
Also wie kompliziert man auch denkt " stream erstellen " dann Stream auslesen und irgendtwie speichern ... war es doch soo einfach 😄
Falls ihr es wissen wollt :

 MeinProjekt.Properties.Resources.DasBild.Save("Pfad", System.Drawing.Imaging.ImageFormat.Bmp);

Danke jetzt kann ich die lokal gespeicherten Bilder nutzen um Wallpaper einzustellen.
Grüße Trisi 😃