Hallo!
Vielen Dank für den Tipp! Funktioniert schonmal. Ist das eine Methode, die "korrekt" ist (also mit dem GarbageCollector). Bin relativ neu in .NET und wie ich es verstanden habe, sollte der GC nach Möglichkeit nicht verwendet werden, da er sehr zeitaufwendigist sein kann (bei Schleifen mit vielen Dateien). Gibt es noch eine andere Möglichkeite, die Routine korrekt umzuschreiben? Wenn nicht trotzdem vielen Dank, ich war schon kurz davor aufzugeben
Laut MSDN ist ein Aufräumen in WPF nicht nötig, deshalb haben die Objekte da auch kein Disposable. Und der MemoryStream wird vom using korrekt beendet.
Hier die scale-Methode:
public static void scale(string sDatei, string sTemp)
{
using (MemoryStream outStream = new MemoryStream())
{
BitmapImage iBitmapImage = new BitmapImage();
iBitmapImage.BeginInit();
iBitmapImage.UriSource = new Uri(sDatei);
iBitmapImage.EndInit();
double x = iBitmapImage.Width;
double y = iBitmapImage.Height;
double xFactor = 267 / x;
double yFactor = 200 / y;
TransformedBitmap iTransformedBitmap = new TransformedBitmap();
iTransformedBitmap.BeginInit();
iTransformedBitmap.Source = iBitmapImage;
iTransformedBitmap.Transform = new ScaleTransform(xFactor, yFactor);
iTransformedBitmap.EndInit();
BitmapEncoder enc = new BmpBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(iTransformedBitmap));
enc.Save(outStream);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(outStream);
bmp.Save(sTemp, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}