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]

VB.NET 2017/2015/2013 Einführung

Das Seminar befähigt Sie zur eigenständigen Entwicklung von anwenderorientierten Programmen in VB.NET, worin auch der Einsatz von Datenbanken enthalten ist.

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

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!