Skip to content

Commit a831753

Browse files
committed
尝试添加双色调效果命令行任务
1 parent c6a9010 commit a831753

5 files changed

Lines changed: 35 additions & 0 deletions

File tree

src/MediaConverters/MediaConverters.Tool/Contexts/IImageConvertTask.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace DotNetCampus.MediaConverters.Contexts;
44

55
[JsonDerivedType(typeof(ReplaceColorTask), typeDiscriminator: nameof(ReplaceColorTask))]
6+
[JsonDerivedType(typeof(SetDuotoneEffectTask), typeDiscriminator: nameof(SetDuotoneEffectTask))]
67
public interface IImageConvertTask
78
{
89
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace DotNetCampus.MediaConverters.Contexts;
2+
3+
public class SetDuotoneEffectTask : IImageConvertTask
4+
{
5+
public string? ArgbFormatColor1 { get; init; }
6+
public string? ArgbFormatColor2 { get; init; }
7+
}

src/MediaConverters/MediaConverters.Tool/Contexts/SourceGenerationContext.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ namespace DotNetCampus.MediaConverters.Contexts;
44

55
[JsonSourceGenerationOptions(WriteIndented = true)]
66
[JsonSerializable(typeof(ReplaceColorInfo))]
7+
[JsonSerializable(typeof(SetDuotoneEffectTask))]
78
[JsonSerializable(typeof(ImageConvertContext))]
89
[JsonSerializable(typeof(IImageConvertTask))]
910
internal partial class SourceGenerationContext : JsonSerializerContext
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using DotNetCampus.MediaConverters.Contexts;
2+
using DotNetCampus.MediaConverters.Imaging.Effects;
3+
using DotNetCampus.MediaConverters.Imaging.Effects.Colors;
4+
using DotNetCampus.MediaConverters.Utils;
5+
6+
using SixLabors.ImageSharp;
7+
using SixLabors.ImageSharp.PixelFormats;
8+
9+
namespace DotNetCampus.MediaConverters.Workers;
10+
11+
internal class SetDuotoneEffectWorker : WorkerBase<SetDuotoneEffectTask>
12+
{
13+
protected override void RunCore(Image<Rgba32> image, SetDuotoneEffectTask task)
14+
{
15+
if (string.IsNullOrEmpty(task.ArgbFormatColor1) || string.IsNullOrEmpty(task.ArgbFormatColor2))
16+
{
17+
return;
18+
}
19+
20+
if (ColorConverter.TryConvertToColor(task.ArgbFormatColor1, out var color1) && ColorConverter.TryConvertToColor(task.ArgbFormatColor2, out var color2))
21+
{
22+
image.SetDuotoneEffect(new ColorMetadata(color1), new ColorMetadata(color2));
23+
}
24+
}
25+
}

src/MediaConverters/MediaConverters.Tool/Workers/WorkerProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class WorkerProvider
99
private readonly IReadOnlyList<IWorker> _workerList =
1010
[
1111
new ReplaceColorWorker(),
12+
new SetDuotoneEffectWorker(),
1213
];
1314

1415
public void Run(Image<Rgba32> image, IImageConvertTask task)

0 commit comments

Comments
 (0)