vault-tec
Erfahrenes Mitglied
Hallo, Forum!
Ich hab mal wieder ein Problem...
Bereits seit einiger Zeit programmiere ich an einer Upload-Seite (in ASP.NET) für eine WebSite. Über diese soll es später den Kunden möglich sein, Banner (also Bilddateien) hochzuladen, sodass diese an entsprechenden Stellen präsentiert werden.
Das ganze funktioniert auch schon soweit ganz gut;
die Bilddateien werden hochgeladen, komprimiert, optisch zurecht-"geschrumpft" und es werden die entsprechenden Einträge in der Datenbank vorgenommen.
Leider funktioniert das Zurecht-"Schrumpfen" nur mit .bmp - und .jpg - , bzw. .jpeg - Dateien, nicht aber mit .gif's.
Schuld daran ist die GetThumbnailImage()-Methode, die sofern es sich um .gif's handelt, diese in viel zu schlechter Qualität ablegt, teilweise mit verfälschten Farben.
Um den Sachverhalt einmal zu veranschaulichen, hier die entsprechende Codestelle:
(Das ursprüngliche Seitenverhältnis wird hier beibehalten)
Zunächst nochmals der Hinweis, dass obiges mit den anderen Dateitypen geklappt hat.
Meine Frage lautet nun: Gibt es eine Alternative zu GetThumbnailImage?
In der MSDN wird in meinem Fall empfohlen, die Graphics.DrawImage-Methode zu benutzen, um das Bild zu skalieren. :suspekt: Allerdings verstehe ich nicht ganz, wie das funktionieren soll, bzw. welche der 286.995 verschiedenen überladenen Varianten hier die beste wäre...
Oder bin ich die ganze Sache von vorneherein falsch angegangen?
Ich wäre für jeden Hinweis dankbar.
Gruß, Niko
Ich hab mal wieder ein Problem...
Bereits seit einiger Zeit programmiere ich an einer Upload-Seite (in ASP.NET) für eine WebSite. Über diese soll es später den Kunden möglich sein, Banner (also Bilddateien) hochzuladen, sodass diese an entsprechenden Stellen präsentiert werden.
Das ganze funktioniert auch schon soweit ganz gut;
die Bilddateien werden hochgeladen, komprimiert, optisch zurecht-"geschrumpft" und es werden die entsprechenden Einträge in der Datenbank vorgenommen.
Leider funktioniert das Zurecht-"Schrumpfen" nur mit .bmp - und .jpg - , bzw. .jpeg - Dateien, nicht aber mit .gif's.

Schuld daran ist die GetThumbnailImage()-Methode, die sofern es sich um .gif's handelt, diese in viel zu schlechter Qualität ablegt, teilweise mit verfälschten Farben.
Um den Sachverhalt einmal zu veranschaulichen, hier die entsprechende Codestelle:
(Das ursprüngliche Seitenverhältnis wird hier beibehalten)
Code:
private Bitmap GetThumbnail(Bitmap bmp, int ofArtID)
{
// Neue Maße Speichern
if(ofArtID==1)
{
int newWidth = 0;
int newHeight = 0;
// Orginalmaße speichern und Skalierfaktor berechnen
int width = bmp.Width;
int height = bmp.Height;
double scaleFactor = (double)width / (double)height;
newWidth = 178;
newHeight = 96;
if (newHeight * scaleFactor <= newWidth)
newWidth = (int)(newHeight * scaleFactor);
else
newHeight = (int)(newWidth / scaleFactor);
// Thumbnailbild erstellen und zurückliefern
return ((Bitmap)bmp.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero));
}
else if(ofArtID==2||ofArtID==3)
{
int newWidth = 0;
int newHeight = 0;
// Orginalmaße speichern und Skalierfaktor berechnen
int width = bmp.Width;
int height = bmp.Height;
double scaleFactor = (double)width / (double)height;
newWidth = 625;
newHeight = 235;
if (newHeight * scaleFactor <= newWidth)
newWidth = (int)(newHeight * scaleFactor);
else
newHeight = (int)(newWidth / scaleFactor);
// Thumbnailbild erstellen und zurückliefern
return ((Bitmap)bmp.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero));
}
else
return null;
}
Meine Frage lautet nun: Gibt es eine Alternative zu GetThumbnailImage?
In der MSDN wird in meinem Fall empfohlen, die Graphics.DrawImage-Methode zu benutzen, um das Bild zu skalieren. :suspekt: Allerdings verstehe ich nicht ganz, wie das funktionieren soll, bzw. welche der 286.995 verschiedenen überladenen Varianten hier die beste wäre...
Oder bin ich die ganze Sache von vorneherein falsch angegangen?
Ich wäre für jeden Hinweis dankbar.
Gruß, Niko