Bilder auf Festplatte drehen und abspeichern - Mit EXIF und richtigem Thumbnail

  • VB.NET
  • .NET (FX) 1.0–2.0

    Bilder auf Festplatte drehen und abspeichern - Mit EXIF und richtigem Thumbnail

    Hallo zusammen,
    ich versuche jetzt schon vier Stunden ein Problem in Griff zu bekommen. Leider ohne Erfolg.
    Ich möchte Fotos auf meiner Festplatte um 180° drehen und abspeichern (überschreiben).

    Die Problematik die ja eigentlich immer auftritt (laut anderen Threads), dass das Bild dabei stark komprimiert wird, habe ich bereits gelöst.

    Mein Problem ist nun, dass entweder die Metadaten oder aber das Thumbnail nicht gespeichert wird.

    Wenn ich Bilder einzeln drehen lasse, wird eigentlich bisher immer das Thumbnail nicht mitgedreht, die Metadaten bleiben aber in der neuen Datei bestehen.

    Wenn ich mehrere Bilder nacheinander drehen lasse, wird bei manchen Bildern entweder das Thumbnail nicht gedreht, aber die Metadaten übernommen oder das Thumbnail wird gedreht, aber die Metadaten werden nicht übernommen.

    Das kann ich mir leider überhaupt nicht erklären.

    Wäre super, wenn jemand weiterhelfen kann.

    Das habe ich bisher:

    Visual Basic-Quellcode

    1. ' Get a bitmap.
    2. Dim bmp1 As Bitmap = New Bitmap(FileSystemWatcher1.Path + "\" + e.Name.ToString)
    3. Dim jgpEncoder As ImageCodecInfo = GetEncoder(ImageFormat.Jpeg)
    4. ' Create an Encoder object based on the GUID
    5. ' for the Quality parameter category.
    6. Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality
    7. ' Create an EncoderParameters object.
    8. ' An EncoderParameters object has an array of EncoderParameter
    9. ' objects. In this case, there is only one
    10. ' EncoderParameter object in the array.
    11. Dim myEncoderParameters As New EncoderParameters(1)
    12. ' Save the bitmap as a JPG file with ninety seven quality level compression.
    13. Dim myEncoderParameter As New EncoderParameter(myEncoder, 97&)
    14. myEncoderParameters.Param(0) = myEncoderParameter
    15. bmp1.RotateFlip(RotateFlipType.Rotate180FlipNone)
    16. Threading.Thread.Sleep(200)
    17. bmp1.Save(FileSystemWatcher1.Path + "\" + e.Name.ToString, jgpEncoder, myEncoderParameters)
    18. bmp1.Dispose()

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