Categories: Software

Einfach: Bilder mit C# in Graustufen oder Sepia konvertieren

Die Bildbearbeitungsbibliotheken von .NET sind eine tolle Sache. So kann man seine Programme simpel um vielfältige Modifikationsmöglichkeiten erweitern. Der Artikel zeigt, wie man die Bildfarben aus C# heraus modifiziert und aus einer farbigen Aufnahme ein klassisches Schwarzweiß-Bild oder eine angegilbte Sepia-Fotografie macht.

Bevor es mit dem Code losgeht, soll aber ein Blick auf die verwendeten Algorithmen geworfen werden, um zu erklären, wie das Bild konvertiert wird. Jeder Algorithmus nimmt eine Farbe als Eingabe und berechnet dann die resultierende Farbe. Für Graustufen ist dies relativ einfach. Es ist lediglich der Helligkeitswert der Farbe nötig, um einen Grauton zu erzeugen. Das Folgende ist eine sehr elementare Implementierung dieses Verfahrens.


outputColor = (inputRed + inputGreen + inputBlue) / 3

Anschließend werden alle drei RGB-Werte mit „outputColor“ gleichgesetzt.

Sepiaton ist schon etwas komplexer, weil nun nicht mehr mit Grautönen gearbeitet wird. Daher lässt sich auch nicht mehr der Durchschnitt der anderen Farben für die Ausgabefarbe verwenden. Sepiaton erfordert eine Berechnung, die der oben gezeigten jedoch sehr ähnlich ist.


outputRed = (inputRed * .393) + (inputGreen *.769) + (inputBlue * .189)
outputGreen = (inputRed * .349) + (inputGreen *.686) + (inputBlue * .168)
outputBlue = (inputRed * .272) + (inputGreen *.534) + (inputBlue * .131)

Falls einer dieser Ausgabewerte größer als 255 ist, wird er einfach auf 255 gesetzt. Diese spezifischen Werte sind die Werte für Sepiaton, wie sie Microsoft empfiehlt.

Die folgenden zwei Beispiele stellen gängigere Methoden zur Konvertierung von Bildern in Graustufen oder Sepiaton dar. Es gibt zwar auch andere Möglichkeiten, das gleiche Ergebnis zu erzielen, doch diese zwei Methoden arbeiten nicht mit unsicheren Codeblöcken oder externen Aufrufen an Windows APIs, wie andere Verfahren das tun. Daher sind diese Lösungen sauber und leicht anzupassen.

Die erste Konvertierungsmethode

Die erste Konvertierungsmethode ist das SetPixel-Verfahren. Dafür wird eine Bitmap erzeugt. Für jedes Pixel der Bitmap wird die Farbe berechnet, zu der es geändert werden soll. Anschließend ändert Bitmap.SetPixel das Pixel auf die gewünschte Farbe. Es folgt ein Beispiel für diese Methode:

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Studie: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

2 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

3 Tagen ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

3 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

3 Tagen ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

4 Tagen ago

Hacker missbrauchen Google Calendar zum Angriff auf Postfächer

Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…

5 Tagen ago