Skip to content

Commit ec403ec

Browse files
committed
测试替换颜色
1 parent 887dd7e commit ec403ec

3 files changed

Lines changed: 41 additions & 6 deletions

File tree

src/MediaConverters/MediaConverters.Lib/Imaging/Effect/BitmapEffectExtension.cs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
1-
using SixLabors.ImageSharp;
1+
using DotNetCampus.MediaConverters.Imaging.Effect.Colors;
2+
using DotNetCampus.MediaConverters.Imaging.Effect.Extensions;
3+
4+
using SixLabors.ImageSharp;
5+
using SixLabors.ImageSharp.Advanced;
26
using SixLabors.ImageSharp.PixelFormats;
37

48
using System;
59
using System.Collections.Generic;
610
using System.Linq;
711
using System.Threading.Tasks;
8-
using DotNetCampus.MediaConverters.Imaging.Effect.Colors;
9-
using DotNetCampus.MediaConverters.Imaging.Effect.Extensions;
10-
using SixLabors.ImageSharp.Advanced;
12+
13+
using static System.Net.Mime.MediaTypeNames;
1114

1215
namespace DotNetCampus.MediaConverters.Imaging.Effect;
1316

@@ -185,6 +188,18 @@ public static void SetSoftEdgeEffect(this Image<Rgba32> bitmap, float radius)
185188
/// </summary>
186189
/// <param name="image"></param>
187190
public static ColorCount GetMaxCountColor(this Image<Rgba32> image)
191+
{
192+
var list = image.GetColorCount();
193+
194+
return list.MaxBy(t => t.Count);
195+
}
196+
197+
/// <summary>
198+
/// 获取无序的颜色数量列表
199+
/// </summary>
200+
/// <param name="image"></param>
201+
/// <returns></returns>
202+
public static IReadOnlyList<ColorCount> GetColorCount(this Image<Rgba32> image)
188203
{
189204
var dictionary = new Dictionary<Rgba32, int>();
190205
image.ProcessPixelRows(accessor =>
@@ -206,8 +221,7 @@ public static ColorCount GetMaxCountColor(this Image<Rgba32> image)
206221
}
207222
});
208223

209-
var (color, count) = dictionary.MaxBy(pair => pair.Value);
210-
return new ColorCount(color, count);
224+
return [..dictionary.Select(t => new ColorCount(t.Key, t.Value))];
211225
}
212226
}
213227

473 KB
Loading

src/MediaConverters/MediaConverters.Tests/Imaging/Effect/BitmapEffectExtensionTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,25 @@ public void ReplaceColorTest2()
4646
var file = image.SaveAndCompareTestFile("ReplaceColorTest1.png");
4747
TestHelper.OpenFileInExplorer(file);
4848
}
49+
50+
[TestMethod()]
51+
public void ReplaceColorTest3()
52+
{
53+
Image<Rgba32> image = TestFileProvider.GetDefaultTestImage();
54+
var list = image.GetColorCount();
55+
list = list.OrderByDescending(t => t.Count).ToList();
56+
57+
var targetColor = new Rgba32(0xFF, 0xFF, 0xFF, 0x00);
58+
var targetMetadata = new ColorMetadata(targetColor);
59+
60+
Dictionary<ColorMetadata, ColorMetadata> colorInfos = [];
61+
for (var i = 0; i < list.Count && i < 10; i++)
62+
{
63+
colorInfos[new ColorMetadata(list[i].Color)] = targetMetadata;
64+
}
65+
66+
image.ReplaceColor(colorInfos);
67+
var file = image.SaveAndCompareTestFile("ReplaceColorTest3.png");
68+
TestHelper.OpenFileInExplorer(file);
69+
}
4970
}

0 commit comments

Comments
 (0)