Graphics "verkleinern"??

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Lukas.

    Graphics "verkleinern"??

    Moin,

    nach ner Zeit beschäftige ich mich mal wieder mit VB, und bin ein wenig mit Graphics-Objekten am malen. Derzeit bin ich dabei, eine Funktion für Thumbnails zu schreiben. Klappt auch gut. (Bereits mit ein bisschen zutun aus dem Netz :P)

    VB.NET-Quellcode

    1. Dim this As Image = Image.FromFile(imag)
    2. Dim maxRatio As Integer = maxwidth / maxheight
    3. Dim imgWidth As Integer = this.Width
    4. Dim imgHeight As Integer = this.Height
    5. Dim imgRatio As Integer = imgWidth / imgHeight
    6. If imgWidth > maxwidth Or imgHeight > maxheight Then
    7. If imgRatio <= maxRatio Then
    8. ' Größenverhältnis des Bildes ist kleiner als die
    9. ' maximale Größe, in der das Bild angezeigt werden kann.
    10. ' In diesem Fall muss die Bildbreite angepasst werden.
    11. imgWidth = imgWidth / (imgHeight / maxheight)
    12. imgHeight = maxheight
    13. Else
    14. ' Größenverhältnis des Bildes ist größer als die
    15. ' maximale Größe, in der das Bild angezeigt werden kann.
    16. ' In diesem Fall muss die Bildhöhe angepasst werden.
    17. imgHeight = imgHeight / (imgWidth / maxwidth)
    18. imgWidth = maxwidth
    19. End If
    20. End If
    21. 'MsgBox(imgWidth.ToString & " " & imgHeight)
    22. Dim saveBitmap As New Bitmap(imgWidth, imgHeight) 'Hier könnte man jetzt das Originalbild hereinzeichen, das Bitmap hätte schon die passende Größe - bloß wie stelle ich das an?
    23. Using g As Graphics = Graphics.FromImage(this)
    24. g.CompositingMode = Drawing2D.CompositingMode.SourceCopy
    25. g.DrawImage(this, 0, 0, imgWidth, imgHeight)
    26. End Using
    27. this.Save("thumb.png")


    "imag" ist das Originalbild, maxwidth und maxheight Integer, die der Funktion mitgegeben werden. Am Ende bekomme ich das Originalbild mit Thumbnail oben rechts darüber. Ich will allerdings nur das Thumbnail an sich.

    Ich stehe total auf dem Schlauch und so langsam nervt mich diese umständliche Programmierei in VB wenn es um grafische Sachen geht schon wirklich an.

    mfg,
    Lukas

    Edit:
    Lösung:

    VB.NET-Quellcode

    1. Dim saveBitmap As New Bitmap(imgWidth, imgHeight)
    2. Using g As Graphics = Graphics.FromImage(saveBitmap)
    3. g.CompositingMode = Drawing2D.CompositingMode.SourceCopy
    4. g.DrawImage(this, 0, 0, imgWidth, imgHeight)
    5. End Using
    6. saveBitmap.Save("thumb.bmp")
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lukas“ ()

    Gibt es nicht eine explizite ThumbNail-Funktion?

    VB.NET-Quellcode

    1. Image.GetThumbnailImage(...)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Jo, gibt es. Ich mag's umständlich, deshalb muss ich das so machen. :P
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.