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.
GFU-Schulungen  [Anzeige]

C# Aufbaukurs

Sie haben grundlegende .NET- und C#-Kenntnisse und und wollen diese nun erweitern. Der Aufbaukurs C# führt Sie ein die Arbeit mit Interfaces und Delegates, Generics und Parallel Computing.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Administratoren - Kompakt

Nach dieser Schulung beherrschen Sie die Grundlagen des TFS. Sie erledigen administrative Aufgaben schnell und sicher.

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!