[VB.net] .Gif laden und in .png konvertieren

mordillo

Mitglied
Hallo,

wie der Titel schon sagt, habe ich folgendes vor:

Ich möchte ein Bild laden, das im GIF Format vorliegt und es dann formatiert (8Bit, Grayscale, evtl. noch invertiert) wieder abspeichern.

Leider hab ich da so gar keinen Ansatzpunkt, obwohl die Bitmapklasse sowas, zumindest für BMP´s, ja zulässt.

In VB6 gab es ja die Möglichkeit über die PictureBox einzelne Pixel auszulesen und neu zu setzen. So hätte man schonmal die Umwandlung in Grayscale erledigt, scheint aber mit VB.net nicht mehr zu gehen (Auf jeden Fall nicht so wie in VB6).

Bin für jede Hilfe dankbar.

Gruß
mordillo
 
Zuletzt bearbeitet:

UTA2000

Grünschnabel
Um ein Bild in einem bestimmten Format zu speichern musst Du bei speichern als zweiten Parameter das Format angeben:
Code:
‘ Make a 256x256 pixel Bitmap.
Dim bm As New Bitmap(256, 256)
‘ Draw on it.
Dim gr As Graphics = Graphics.FromImage(bm)
gr.Clear(Color.White)
gr.DrawEllipse(Pens.Red, 0, 0, bm.Width - 1, bm.Height - 1)
gr.DrawLine(Pens.Green, 0, 0, bm.Width - 1, bm.Height - 1)
gr.DrawLine(Pens.Blue, bm.Width - 1, 0, 0, bm.Height - 1)
‘ Save the result as a JPEG file.
bm.Save(“C:\test.jpg”, ImageFormat.Jpeg)
Wenn Du nichts angibst, wird automatisch PNG verwendet.
Achtung: Das Speicherformat ist unabhängig von der eingegebenen Dateiendung.

Invertieren wäre z.B. so möglich:
Code:
Private Sub InvertImage(ByVal bm As Bitmap)
‘ Process the image’s pixels
For y As Integer = 0 To bm.Height - 1
For x As Integer = 0 To bm.Width - 1
‘ Get this pixel’s color.
Dim clr As Color = bm.GetPixel(x, y)
‘ Invert the color’s components.
clr = Color.FromArgb(255, _
255 - clr.R, _
255 - clr.G, _
255 - clr.B)
‘ Set the result pixel’s color.
bm.SetPixel(x, y, clr)
Next x
Next y
End Sub
 

mordillo

Mitglied
OK, das funktioniert jetzt mit selbst erstellten Grafiken, wie aber kann ich z.B. ein *.gif laden und dieses umwandeln?
 

UTA2000

Grünschnabel
Aber mordillo, Dir muss man ja sogar die einfachsten Dinge als Quellcode schreiben. Du solltest mehr probieren, dadurch lernt man wirklich schneller und besser ;)
Code:
Dim Bmp As Bitmap = New Bitmap("C:\Temp\Bild.gif")
Bmp.Save("C:\Temp\Bild.jpg", ImageFormat.Jpeg)

Ich selbst habe vor einer Woche begonnen, die englischen Video-Kurse von http://www.lernvisualstudio.net zu machen. Kann ich nur empfehlen. Habe vorher nie etwas mit VB (egal welche Version) gemacht.

UTA
 

UTA2000

Grünschnabel
btw: Ich habe die Vermutung, Du glaubst, dass die Bitmap-Klasse nur mit BMP-Dateien umgehen kann. Wie Du aber an den obigen Beispielen siehst, hat das nichts miteinander zu tun.

.Net scheint es uns Programmierern hier ziemlich einfach zu machen.

UTA
 

mordillo

Mitglied
Genau so sah es aus: Bitmap = BMP, dachte ich und deshalb erst gar nicht damit probiert ... Ich häng da noch zu sehr an VB6

Glaub mir, ich Trial an Error schon ne ganze Menge, aber manchmal sieht man das einfachste einfach nicht .. Danke .
 
Zuletzt bearbeitet: