Bilddateigrösse verkleinern

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Dancger.

    Bilddateigrösse verkleinern

    Und noch eine Frage ;D

    Wie kann ich ein Bild auf eine maximale Grösse auf schrumpfen, z.B. 250MB.
    Habe diesen Code gefunden:

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Diese Funktion Komprimiert ein JPEG Bild und speichert dieses als neues Bild ab
    3. ''' </summary>
    4. ''' <param name="Image">Das Bild welches komprimiert werden soll</param>
    5. ''' <param name="OutPutFile">Der Pfad des neuen komprimierten Bilds</param>
    6. ''' <param name="Qualitiy">Die Qualitätseinstellung 0-100</param>
    7. Public Sub JPEGCompression(ByVal Image As Image, ByVal OutPutFile As String, ByVal Qualitiy As Integer)
    8. Dim ImageCodecs() As ImageCodecInfo
    9. Dim ImageParameters As EncoderParameters
    10. ImageCodecs = ImageCodecInfo.GetImageEncoders()
    11. ImageParameters = New EncoderParameters(1)
    12. ImageParameters.Param(0) = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Qualitiy)
    13. Image.Save(OutPutFile, ImageCodecs(1), ImageParameters)
    14. End Sub

    Leider kann man nur die Qualität einstellen, jedoch nicht die maximale Grösse.
    Und eine Schleife zu machen, stufenweise jede Qualität zu erstellen, die Grösse abzufragen, und falls zu gross das ganze nochmals zu verkleinern, habe ich keine Lust und ausserdem würde das sowieso viel zu lange dauern.

    Brauche einen Denkanstoss und vielleicht auch einen nützlichen Link.

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Ich würde mal sagen gar nicht,
    weil du nicht mal weißt was "richtig" ist!
    Woher soll den der Computer erkennen, ob das jetzt die Original-Größe ist oder nicht?
    Solange du es ihm nicht "sagst" wird er es kaum ausführen können :wacko: !
    Bild ist Bild! Ob ein Bild nun verschwommen ist, oder nicht macht keinen Unterschied!
    1. Dürft ich erfahren für was du es brauchst?

    2. Wennst 3. klappr bedanken net vergessen!

    3.
    Spoiler anzeigen
    Hier musst du dir alles raussuchen aber er verkleinert es. (Ich habs jez nur aus meinen Code kopiert also sry fürs suchen^^)

    VB.NET-Quellcode

    1. Dim s As String = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)
    2. Dim files As String() = Directory.GetFiles(s)
    3. Dim screenSize = New Size(Convert.ToInt32(txtWidth.Text), Convert.ToInt32(txtHeight.Text))
    4. For Each _file As String In files
    5. Dim fi = New FileInfo(_file)
    6. Try
    7. LoadImageToPanel(fi)
    8. Using img As LogonChanger.JpgImage = LogonChanger.ImageProcessor.compressToJpeg(currPic, screenSize, 256000)
    9. If img.Size > 256000 Then
    10. ' Uh oh...
    11. Console.WriteLine("{0},{1:0,000},{2}", img.Quality, img.Size, fi.Name)
    12. End If
    13. End Using
    14. Catch
    15. ' who cares. move on...
    16. End Try
    17. Next
    18. Console.WriteLine("Done!")
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Ich würde mal sagen gar nicht,
    weil du nicht mal weißt was "richtig" ist!
    Woher soll den der Computer erkennen, ob das jetzt die Original-Größe ist oder nicht?
    Solange du es ihm nicht "sagst" wird er es kaum ausführen können !
    Bild ist Bild! Ob ein Bild nun verschwommen ist, oder nicht macht keinen Unterschied!


    Er weiss dases richtig ist wenn das File kleiner als 250MB ist.
    Das Bild wird zuerst auf eine fixe Grösse verkleinert/vergrössert.
    Was bringt ihm das wenn er erkennt ob es die Originale Grösse ist oder nicht? Kann ich jetzt nicht ganz nachvollziehen was du meinst...

    Dürft ich erfahren für was du es brauchst?

    Für ein Programm, welches mir Bilder auf die aktuelle Auflösung ändert und danach das File unter 250MB kriegt, damit ich das als Windows Login Hintergrundbild benutzen kann, also nix kriminelles.

    Wennst 3. klappr bedanken net vergessen!

    Klappt aber nicht^^
    2 Fehler.
    Spoiler anzeigen
    Fehler 2 Der Typ "LogonChanger.JpgImage" ist nicht definiert. D:\UserData\*********\My Documents\Visual Studio 2008\Projects\**********\***********\Frm_Main.vb 138 42 *******

    Spoiler anzeigen
    Fehler 1 Der Name "LoadImageToPanel" wurde nicht deklariert. D:\UserData\*********\My Documents\Visual Studio 2008\Projects\***********\**********\Frm_Main.vb 137 29 *******

    Was muss ich importieren? InteletiSence (oder so) zeigt mir nichts...

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Dancger“ ()

    aso ja importieren...

    Ich hab leider wenig zeit, dass ist alles was ich importiert hab:

    VB.NET-Quellcode

    1. Imports System.Drawing
    2. Imports System.IO
    3. Imports System.Security.Principal
    4. Imports System.Windows.Forms
    5. Imports Microsoft.Win32
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    was für ein fehler kommt denn?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!