vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: JPG verkleinern 
Autor: modellskipper
Datum: 09.05.06 11:47

Hat sich erledigt, hier das Ergebnis, falls es jemanden interessiert.

Noch einmal zum Hintergrund ... ich stand vor der Aufgabe JPG-Bilder zu verkleinern.

Eine Alternative wäre die Image.GetThumbnailImage-Methode gewesen, die liefert aber nur bis zum einer gewissen Bildgröße eine annehmbare Qualität. Wird eine maximale Kantenlänge von 120 px überschritten, ist es fast nicht mehr brauchbar. Interessant an der Geschichte, für kleine Bildchen funktioniert es recht gut, schnell und es wird sogar einigermaßen vernüftig interpoliert (Antialiasing). Das war's dann aber schon. Für größere Abmessungen ab einer Kantenlänge von 250 px, wie schon erwähnt, nicht brauchbar

Die nachfolgenden Codezeilen erzeugen wirklich Spitzen-Ergebnisse und das sogar recht schnell. Es eignet sich für jede gewünschte Größe, proportionale Berechnung ist gleich mit eingebaut. Man kann ja zusätzlich noch ein bisschen mit der Kompressionsrate und den InterpolationMode spielen.

Alles in allem überzeugt dieses kleine Progrämmchen.

Wer's gebrauchen kann, viel Spaß.


Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2D
 
Module resize
 
    Sub main()
 
        Dim Quelldatei As String = "bild.jpg"   'Dateiname des Herkunftsbildes
        Dim Zieldatei As String = "bild_1.jpg" 'Dateiname des zu 
        ' konvertierenden Bildes
        Dim Kantenlänge As Integer = 250        'die maximale Kantenlänge der 
        ' neuen Bildes
        Dim Qualität As Long = 80               'die Kompressionsrate 100 = 
        ' keine, 1 = maximale Kompression
 
        ' ImageCodecInfo-Objekt erstellen, das dem JPEG-Codec entspricht.
        Dim JpegCodec As ImageCodecInfo = GetEncoderInfo("image/jpeg")
 
        ' Array erstellen, das alle Encoding-Parameter beinhaltet,
        ' in diesem Fall beinhaltet es nur den Quality-Parameter.
        Dim Kompression As New EncoderParameters(1)
        Kompression.Param(0) = New EncoderParameter(Encoder.Quality, Qualität)
 
        'das Originalbild laden
        Dim Originalbild As Image = Originalbild.FromFile(Quelldatei, True)
 
        'proportionale Berechnung des neuen Bildes
        Dim ResampleBreite As Integer
        Dim ResampleHöhe As Integer
 
        If Originalbild.Width > Originalbild.Height Then
            ResampleBreite = Kantenlänge
            ResampleHöhe = CInt((Kantenlänge / Originalbild.Width) * _
              Originalbild.Height)
        Else
            ResampleHöhe = Kantenlänge
            ResampleBreite = CInt((Kantenlänge / Originalbild.Height) * _
              Originalbild.Width)
        End If
 
        'ein neues Bitmap-Objekt mit den errechneten Maßen erstellen
        Dim KonvertiertesBild As New Bitmap(ResampleBreite, ResampleHöhe)
 
        'ein neues Grafikobjekt erstellen
        Dim Grafik As Graphics = Graphics.FromImage(KonvertiertesBild)
 
        'die Qualität des Resamplings festlegen
        Grafik.InterpolationMode = InterpolationMode.High
 
        'das neue Bild zeichnen
        Grafik.DrawImage(Originalbild, 0, 0, ResampleBreite, ResampleHöhe)
 
        'das konvertierte Bild speichern
        KonvertiertesBild.Save(Zieldatei, JpegCodec, Kompression)
 
        End
 
    End Sub
 
    Private Function GetEncoderInfo(ByVal mimeType As String) As ImageCodecInfo
        Dim i As Integer
        Dim Encoders() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders()
        For i = 0 To Encoders.Length - 1
            If Encoders(i).MimeType = mimeType Then
                Return Encoders(i)
            End If
        Next
        Return Nothing
    End Function
 
End Module
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
JPG verkleinern2.206modellskipper08.05.06 17:53
Re: JPG verkleinern1.904modellskipper09.05.06 11:47
Re: JPG verkleinern1.832Wolfgang_M05.02.07 08:34
Re: JPG verkleinern1.848MeikMiller05.02.07 19:17
Re: JPG verkleinern1.652Wolfgang_M05.02.07 20:17

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel