Servus zusammen,
kennt von euch einer eine relative schnelle methode, ein Bild in schwarz weiß zu verwandeln?
Mfg
Tobias
No Risk, No Fun
Mit einer System.Drawing.Imaging.ColorMatrix geht's ...
Code Project:
ColorMatrix Basics - Simple Image Color Adjustment
MSDN:
GDI+ Recoloring
Gruss
Pulpapex
ok das hat mir ein bischen gholfen Danke, aber leide rmacht das zeugs alle nciht kpl. schwarz weis sondern graustufen aber ich möchte nur schwarz also 255 und weiß 0 oder wars andersrum...
No Risk, No Fun
ok, dann such mal im Netz nach "1 bit dithering". Es gibt verschiedene Algorithmen. Bei einem Quellbildmaterial sieht ein Algorithmus besser aus, bei einem anderen ein anderer.
Mit folgendem Ansatz könnte das Problem auch gelöst werden (Simpel ein farbiges Bild
in ein graustufen Bild konvertieren):
Bitmap graustufe = (Bitmap)pictureBox1.Image;
int height = graustufe.Height;
int width = graustufe.Width;
for (int j = 0; j < height; j++)
{
for (int i = 0; i < width; i++)
{
Color farbe;
farbe = graustufe.GetPixel(i, j);
graustufe.SetPixel(i, j, Color.FromArgb((farbe.R + farbe.G + farbe.B) / 3, (farbe.R + farbe.G + farbe.B) / 3, (farbe.R + farbe.G + farbe.B) / 3));
}
}
pictureBox1.Image = graustufe;
EDIT: Sorry, dass mit den graustufen hab ich zu spät gelesen ^^
Also entweder bin ich zu blöd aber ich finde keinen einzigen algo...
No Risk, No Fun
Hallo Matrix-NTN,
der einfachste Algorithmus ist Schwellwert. Dazu nimmst du dir die LowLevelGraphicsLibrary von dr4g0n76 aus Neue Komponente: LowLevelGraphicsLibrary und fügst in der Methode in Datei cGraphics.cs an Zeile 573 hinter der Zeile
grau = (Byte)((77*rv+151*gv+28*bv)/256);
noch ein:
grau = (grau < 128) ? 0 : 255
Statt 128 kannst du natürlich auch einen zusätzlichen Parameter benutzen.
herbivore
Herzlichen Danke,
du glaubst garnich wie du mir gerade geholfen hast 😉
No Risk, No Fun