Ik ben nog steeds aan het puzzelen met mijn plaatjes 
Mijn input plaatje is eentje met een witte achtergrond en lichtgrijze lijnen.
Ik will hier graag eentje met een witte achtergrond en zwarte lijnen van maken.
Het pixel voor pixel veranderen is geen optie, want het gaat hier om plaatjes van ca. 6200*4500 pixel.
Unsafe code gebruiken kan ook niet.
Na veel geGoogle ben ik met de ColorMatrix gaan stoeien. Die lijkt te doen wat ik wil (met een value van -200), maar de achtergrond wordt ook donkerder. En dan moet nu juist niet.
De documentatie voor ColorMatrix is erg summier en ik kom dan ook niet verder.
Zit ik wel op het juiste spoor of moet ik in een andere richting zoeken?
Ik zat bijvoorbeeld ook aan imagemagick te denken. Maar daar heb ik ook geen ervaring mee.
Elk advies is welkom.
Mijn input plaatje is eentje met een witte achtergrond en lichtgrijze lijnen.
Ik will hier graag eentje met een witte achtergrond en zwarte lijnen van maken.
Het pixel voor pixel veranderen is geen optie, want het gaat hier om plaatjes van ca. 6200*4500 pixel.
Unsafe code gebruiken kan ook niet.
Na veel geGoogle ben ik met de ColorMatrix gaan stoeien. Die lijkt te doen wat ik wil (met een value van -200), maar de achtergrond wordt ook donkerder. En dan moet nu juist niet.
De documentatie voor ColorMatrix is erg summier en ik kom dan ook niet verder.
Zit ik wel op het juiste spoor of moet ik in een andere richting zoeken?
Ik zat bijvoorbeeld ook aan imagemagick te denken. Maar daar heb ik ook geen ervaring mee.
Elk advies is welkom.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| private static void DarkenImage(string inputFileName, int value) { float sb = (float)value / 255F; float[][] colorMatrixElements = { new float[] {1, 0, 0, 0, 0}, new float[] {0, 1, 0, 0, 0}, new float[] {0, 0, 1, 0, 0}, new float[] {0, 0, 0, 1, 0}, new float[] {sb, sb, sb, 1, 1} }; ColorMatrix cm = new ColorMatrix(colorMatrixElements); using (Bitmap bmpIn = (Bitmap)Bitmap.FromFile(inputFileName)) { using (Bitmap converted = new Bitmap(bmpIn.Width, bmpIn.Height, PixelFormat.Format32bppArgb)) { using (ImageAttributes imgattr = new ImageAttributes()) { Rectangle rc = new Rectangle(0, 0, bmpIn.Width, bmpIn.Height); using (Graphics g = Graphics.FromImage(converted)) { g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; imgattr.SetColorMatrix(cm); g.DrawImage(bmpIn, rc, 0, 0, converted.Width, converted.Height, GraphicsUnit.Pixel, imgattr); } } // TODO: Save as 8Bit PNG again converted.Save(System.IO.Path.ChangeExtension(inputFileName, ".darken" + value.ToString() + ".png")); } } } |