From d11c2ac9288225d04f2f51566fcc0d8b730eda3b Mon Sep 17 00:00:00 2001 From: Simon Mourier Date: Wed, 21 Feb 2024 16:44:26 +0100 Subject: [PATCH] wip --- WicNet.Tests/Program.cs | 24 ++++++++++++++++++++- WicNet.Tests/Properties/launchSettings.json | 2 +- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/WicNet.Tests/Program.cs b/WicNet.Tests/Program.cs index 3bc06cb..7e2e31f 100644 --- a/WicNet.Tests/Program.cs +++ b/WicNet.Tests/Program.cs @@ -14,10 +14,12 @@ class Program { static void Main(string[] args) { - ConvertSvgAsPng("tiger.svg"); + Posterize(256); return; ConvertToBW(); return; + ConvertSvgAsPng("tiger.svg"); + return; ExtractGif(); return; LoadFromIcon(); @@ -466,6 +468,26 @@ static void RotateAndGrayscale() Process.Start(new ProcessStartInfo("gray.jpg") { UseShellExecute = true }); } + static void Posterize(uint numberOfColors) + { + using var bmp = WicBitmapSource.Load("SamsungSGH-P270.jpg"); + bmp.ConvertTo(WicPixelFormat.GUID_WICPixelFormat32bppBGR); + using var newBmp = new WicBitmapSource(bmp.Width, bmp.Height, WicPixelFormat.GUID_WICPixelFormat32bppPRGBA); + using var rt = newBmp.CreateDeviceContext(); + using var fx = rt.CreateEffect(Direct2DEffects.CLSID_D2D1Posterize); + using var cb = rt.CreateBitmapFromWicBitmap(bmp.ComObject); + fx.SetInput(cb); + fx.SetValue((int)D2D1_POSTERIZE_PROP.D2D1_POSTERIZE_PROP_RED_VALUE_COUNT, numberOfColors); + fx.SetValue((int)D2D1_POSTERIZE_PROP.D2D1_POSTERIZE_PROP_GREEN_VALUE_COUNT, numberOfColors); + fx.SetValue((int)D2D1_POSTERIZE_PROP.D2D1_POSTERIZE_PROP_BLUE_VALUE_COUNT, numberOfColors); + rt.BeginDraw(); + rt.DrawImage(fx); + rt.EndDraw(); + var name = "posterize" + numberOfColors + ".jpg"; + newBmp.Save(name); + Process.Start(new ProcessStartInfo(name) { UseShellExecute = true }); + } + static void ConvertToBW() { using var bmp = WicBitmapSource.Load("SamsungSGH-P270.jpg"); diff --git a/WicNet.Tests/Properties/launchSettings.json b/WicNet.Tests/Properties/launchSettings.json index 8cb20e5..6b586b5 100644 --- a/WicNet.Tests/Properties/launchSettings.json +++ b/WicNet.Tests/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "WicNet.Tests": { "commandName": "Project", - "nativeDebugging": true + "nativeDebugging": false } } } \ No newline at end of file