Feedback

C# - Bild rotieren mit C#

Veröffentlicht von am 19.06.2011
(0 Bewertungen)
Mit dieser Funktion lässt sich ein Bild rotieren. Zurückgeliefert wird ein Objekt vom Typ Bitmap mit der angewendeten Rotation.
public Bitmap rotateImage(Bitmap bitmap, float angle)  
{  
     Bitmap returnBitmap = new Bitmap(bitmap.Width, bitmap.Height);  
     Graphics graphics = Graphics.FromImage(returnBitmap);  
     graphics.TranslateTransform((float)bitmap.Width / 2, (float)bitmap.Height / 2);  
     graphics.RotateTransform(angle);  
     graphics.TranslateTransform(-(float)bitmap.Width / 2, -(float)bitmap.Height / 2);  
     graphics.DrawImage(bitmap, new Point(0, 0));  
     return returnBitmap;  
} 

6 Kommentare zum Snippet

Martin Dauskardt schrieb am 19.06.2011:
Mein Vorschlag:


public Bitmap rotateImage(Bitmap bitmap, float angle)
{
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.TranslateTransform((float)bitmap.Width / 2, (float)bitmap.Height / 2);
graphics.RotateTransform(angle);
graphics.TranslateTransform(-(float)bitmap.Width / 2, -(float)bitmap.Height / 2);
graphics.DrawImage(bitmap, new Point(0, 0));
}
return bitmap;
}
bestel schrieb am 19.06.2011:
Das kann doch die Bitmap Klasse auch schon von Haus aus.
Beispiel:
Bitmap btmp1 = new Bitmap();
btmp1.RotateFlip(RotateFlipType.Rotate180FlipX);
Kevin Gerndt schrieb am 20.06.2011:
Könnte mir vorstellen, dass meine Methode über die graphics methode schneller ist ... müsste man mal ausprobieren
Curry schrieb am 20.06.2011:
Das bezweifle ich stark, dass es über ein Graphics-Objekt schneller geht.
GDI+ ist relativ langsam und sollte für solche Aufgaben lieber nicht verwendet werden.
Raffi schrieb am 12.07.2011:
@Curry & @Kevin:
Ich habe mich mal mit dem Thema welche Variante schneller ist auseinandergesetzt.
http://code-bude.net/2011/07/12/bilder-rotieren-mit-csharp-bitmap-rotateflip-vs-gdi-graphics/

Was das ursprüngliche Snippet angeht, finde ich die Lösung mit
Bitmap returnBitmap = new Bitmap(bitmap.Width, bitmap.Height);  

eher ungünstig, da vor allem bei der Bearbeitung vieler Bilder schnell der Speicher an seine Grenzen stößt.

Viele Grüße,
Raffi
Curry schrieb am 19.07.2011:
@Raffi:
Vielen Dank, dass du dich mit dem Thema auseinandergesetzt hast!
Sehr interessant, wie ich finde :-)
 

Logge dich ein, um hier zu kommentieren!