C# Bildabmessungen ermitteln

atlan428

Well-known member
ID: 43536
L
13 Mai 2006
269
10
Kann mir jemand sagen, wie ich mit C# 2008 die Abmessungen von vielen JPG-Bildern (Wallpapern) flott ermitteln kann?

Zur Zeit benutze ich für jedes einzelne Bild folgenden Code:
Code:
oImg = new Bitmap(sPath);
iHeight = oImg.Height;
iWidth = oImg.Width;
oImg.Dispose();

Dieser ist aber leider nicht sehr schnell; vorallem bei hohen Auflösungen.
Bringt es mehr Performance wenn ich das Objekt einmal erstellen lasse, dann jedes Bild reinlade, die Abmessungen auslese und danach erst dispose? Oder gibt es einen schnelleren Code bzw. API-Call dafür?

Schomal vielen Dank für eure Hilfe!
 
Probier mal, ob es schneller ist, das Bild so zuzuweisen:
Code:
oImg = System.Drawing.Image.FromFile(sPath);

Das ist eigentlich der einzige Unterschied, den ich in meinem Code habe. (habe vor 1-2 Jahren mal ein Programm gebastelt, das mir Bilder skaliert)
 
Danke für eure Antworten!

Ich habe gerade mal beides getestet, aber leider ist es über diese Möglichkeiten auch nicht schneller.
Anscheinend braucht das alleinige Öffnen der Dateien schon so lange. :(
 
hi,
deutlich schneller geht es, wenn du das Bild aus einen Stream lädst
und dabei den 3 Parameter auf false stellst:
z.b
using(FileStream fs = new FileStream("datei.jpg",FileMode.open))
{
img = Image.FromStream(fs,true,false);

}
lg
 
hi,
deutlich schneller geht es, wenn du das Bild aus einen Stream lädst
und dabei den 3 Parameter auf false stellst:
z.b
using(FileStream fs = new FileStream("datei.jpg",FileMode.open))
{
img = Image.FromStream(fs,true,false);

}
lg

Vielen Dank für den Tipp! Dieser Code ist extrem viel schneller!
Das langsamste ist jetzt die Ermittlung der CRC32-Checksumme. ;)
 
jo kein Problem:D hatte durch Zufall genau am gleichen Tag wie du das gleiche Problem und hatte mich shcon über dein Thread gefreut leider gabs keine Antwort ;)