Ich habe einen Ordner mit Höhe Menge geolocated Datei, ich möchte eine KML mit der Ortsmarkierung machen. Kein Problem für das XML (KML) Dokument, aber das Bild ist groß und ich möchte einen Daumen (1/10) und ein kleines Bild (1/4) in einem separaten Ordner erstellen.
Das Bild sind 4000x3000 Allround 5 MB, für kleine Menge nicht Problem, aber wenn der Ordner mehr von 35 Bild (in debug) habe ich das Problem. Ich habe versucht, mit Einweg-Objekt mit Verwendung, GC.collect
nur Bildverarbeitung, aber nichts verwendet.System.OutOfMemoryException aufgetreten in System.Drawing.dll mit großen Menge von Bild
Ich habe Ordner mit 1400 Bild oder mehr zu erarbeiten ... ist möglich, um diese Anwendung damit zu arbeiten?
public static class MyClass_img
{
public static void ResizeImage(Image image, int width, int height, string pathImage)
{
using (var destImage = new Bitmap(width, height))
{
destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
using (var graphics = Graphics.FromImage(destImage))
{
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
using (var wrapMode = new ImageAttributes())
{
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
var destRect = new Rectangle(0, 0, width, height);
graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
}
}
destImage.Save(pathImage);
}
GC.Collect();
}
public static string imageReduce(Image img, string path, int percentValue, string extension, string folder)
{
var dirName = new DirectoryInfo(path).Parent.Name;
string pathImg = folder + dirName + "_" + Path.GetFileNameWithoutExtension(path) + extension;
AprItalia_img.ResizeImage(img, img.Width/percentValue, img.Height/percentValue, pathImg);
return pathImg;
}
}
Das Bild, das Sie übergeben, wird wahrscheinlich nicht in 'imageReduce (Image img, ...)' umgewandelt. – CodeCaster
Tun Sie 'GC.Collect()' nicht, es sei denn, es ist wirklich erforderlich, da häufiges Säubern den Verarbeitungsdruck erhöht. –
Auch was ist der RAM Ihres Systems? –