Bildausschnitt aus Datei (ohne PictureBox) ermitteln

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von LokHeiko.

    Bildausschnitt aus Datei (ohne PictureBox) ermitteln

    Hallöchen,
    also meine Suche führte bisher zu keinem Ergebniss.

    Ich hätte aus einer Bilddatei (bmp, png, jpc) einen Teilausschnitt - ohne diese Datei in einer Picturebox zu legen.

    Beispiel: Ein Bild (300x100) enthält Einen roten, gelben und grünen Punkt so wie bei einer Ampel.
    Darstellen möchte ich aber nur den gelben Punkt (100x 100) also Bildposition 100,0 - 200,100.

    Dieser Ausschnitt soll dann in einer PictureBox geladen und angezeigt werden.

    Für jeden Gedenk-Anstoss vielen Dank.

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Nicht 100% mein Code, aber klappt.
    Für sowas kannste immer die Bitmap-Klasse benutzen, wenn du auf Pictureboxes verzichten möchtest.

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Function CropBitmap(ByRef bmp As Bitmap, ByVal cropX As Integer, ByVal cropY As Integer, ByVal cropWidth As Integer, ByVal cropHeight As Integer) As Bitmap
    4. Dim rect As New Rectangle(cropX, cropY, cropWidth, cropHeight)
    5. Dim cropped As Bitmap = bmp.Clone(rect, bmp.PixelFormat)
    6. Return cropped
    7. End Function
    8. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    9. Dim bmp As Bitmap = New Bitmap(Bitmap.FromFile("C:\Users\xored\Desktop\Test.jpg"))
    10. PictureBox1.Image = CropBitmap(bmp, 100, 100, 300, 100) 'Bitmap, X, Y, Breite, Höhe
    11. End Sub
    12. End Class


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza
    @LokHeiko Arbeite nicht blind mit Bildern!
    Mache in jedem Falle eine visuelle Kontrolle.
    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!
    Hi xored,

    also ich habe extra ein neues Project angelegt und wie immer Option Strict On eingestellt.
    Aus deinen post habe ich nur Zeile 11 den Bildpfad angepasst ( zu F:\TESTBILD.BMP )
    Jedoch funktionier es nicht

    Zeile 6 in deinem Beispiel

    Dim cropped As Bitmap = bmp.Clone(rect, bmp.PixelFormat)

    ergibt einem Fehler.

    System.OutOfMemoryException: "Nicht genügend Arbeitsspeicher" .... wenn 64 GB nicht reichen :P

    Schade.

    EDIT: Ich hab in Zeile 12 die Werte mal zu kleiner geändert dann funktioniert es. Bildprogramme nehmen ja 0,0 für den ersten Pixel oben links.

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

    @LokHeiko Gib Deinem Projekt 64 Bit (Haken Prefer 32 Bit (oder so) in den Projektreinstellungen rausnehmen).
    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!