Hallo zusammen,ich habe folgende Problematik mit meinem Programm:
Ich habe ein Programm, welches über eine ListView einen beliebigen Ordner anzeigt und von Image Dateien Thumbnails erstellt.
Wenn ich ein Bild in den Ordner ziehe, wird der Ordner mit dem FileSystemWatcher aktualisiert und das Thumbnail wird geladen.
Das
ganze funktioniert auch wunderbar mit einem Dropbox Ordner. Wenn ich
beispielsweiße mit meinem Smartphone ein Image uploade, wird mir das
Image nach paar Sekunden angezeigt.
Jetzt habe ich das gleiche auch mit der Nextcloud getestet, erhalte allerdings eine Out of Memory Exception.
Was könnte das Problem hierbei sein? Ist die Synchronisation der Nextcloud eventuell zu langsam?
Die Function wird hierbei nur 6 mal aufgerufen, das kann also nicht am mangelnden Arbeitsspeicher liegen.
Hier tritt der Fehler auf.
Bin sehr Dankbar für jede Hilfe!:)
Lg
Ich habe ein Programm, welches über eine ListView einen beliebigen Ordner anzeigt und von Image Dateien Thumbnails erstellt.
Wenn ich ein Bild in den Ordner ziehe, wird der Ordner mit dem FileSystemWatcher aktualisiert und das Thumbnail wird geladen.
Das
ganze funktioniert auch wunderbar mit einem Dropbox Ordner. Wenn ich
beispielsweiße mit meinem Smartphone ein Image uploade, wird mir das
Image nach paar Sekunden angezeigt.
Jetzt habe ich das gleiche auch mit der Nextcloud getestet, erhalte allerdings eine Out of Memory Exception.
Was könnte das Problem hierbei sein? Ist die Synchronisation der Nextcloud eventuell zu langsam?
Die Function wird hierbei nur 6 mal aufgerufen, das kann also nicht am mangelnden Arbeitsspeicher liegen.
VB.NET-Quellcode
- Private Function CreateThumbnail(ByVal sFullPath As String) As Bitmap
- ' Originalbild einlesen
- Dim orgImg As Image = Image.FromFile(sFullPath)
- Dim imgWidth As Integer = orgImg.Width
- Dim imgHeight As Integer = orgImg.Height
- Dim imgRatio As Single = CSng(imgWidth) / CSng(imgHeight)
- Dim maxRatio As Single = CSng(thumbWidth) / CSng(thumbHeight)
- ' Skalierung berechnen
- If imgRatio <= maxRatio Then
- imgWidth = CInt(imgWidth / (imgHeight / thumbHeight))
- imgHeight = thumbHeight
- Else
- imgHeight = CInt(imgHeight / (imgWidth / thumbWidth))
- imgWidth = thumbWidth
- End If
- ' neue Bitmap in der Größe der Thumbnailsmaße erstellen
- Dim thumbBmp As New Bitmap(thumbWidth, thumbHeight, PixelFormat.Format24bppRgb)
- ' vom neuen Bitmap ein Graphics-Objekt erstellen
- Using gra As Graphics = Graphics.FromImage(thumbBmp)
- ' div. Optimierungseinstellungen für das Graphics-Objekt
- gra.SmoothingMode = SmoothingMode.HighQuality
- gra.CompositingQuality = CompositingQuality.HighQuality
- gra.InterpolationMode = InterpolationMode.HighQualityBicubic
- gra.PixelOffsetMode = PixelOffsetMode.HighQuality
- ' Hintergrundfarbe setzen
- gra.Clear(ImageList1.TransparentColor)
- ' Originalbild korrekt skaliert an die richtige Position zeichnen
- gra.DrawImage(orgImg, CInt((thumbWidth / 2) - (imgWidth / 2)),
- CInt((thumbHeight / 2) - (imgHeight / 2)),
- imgWidth, imgHeight)
- ' Originalbild freigeben (keine Dateisperre!)
- orgImg.Dispose()
- CreateThumbnail = thumbBmp
- End Using
- End Function
Hier tritt der Fehler auf.
Bin sehr Dankbar für jede Hilfe!:)
Lg