77using System . Linq ;
88using System . Text ;
99using System . Threading . Tasks ;
10+ using SixLabors . ImageSharp ;
11+ using SixLabors . ImageSharp . Processing ;
1012
1113namespace DotNetCampus . MediaConverters . Imaging . Effect ;
1214
13- public class SoftEdgeHelper
15+ public static class SoftEdgeHelper
1416{
1517 /// <summary>
1618 /// 创建柔化边缘蒙层
@@ -30,21 +32,9 @@ public static void SetSoftEdgeMask(SixLabors.ImageSharp.Image<Rgba32> bitmap, fl
3032 var offsetX = ( int ) Math . Round ( radius / 4.0 ) ;
3133 var offsetY = ( int ) Math . Round ( radius / 4.0 ) ;
3234
33- var source = new byte [ cols , rows ] ;
34- // 创建Alpha通道蒙层Maps
35- bitmap . ProcessPixelRows ( pixelAccessor
36- =>
37- {
38- for ( var row = 0 ; row < rows ; row ++ )
39- {
40- var pixelRow = pixelAccessor . GetRowSpan ( row ) ;
41- for ( var col = 0 ; col < cols ; col ++ )
42- {
43- var pixel = pixelRow [ col ] ;
44- source [ col , row ] = pixel . A == 0 ? ( byte ) 0 : byte . MaxValue ;
45- }
46- }
47- } ) ;
35+ var inputSource = CreateSoftEdgeAlphaMask ( bitmap ) ;
36+
37+ var source = inputSource ;
4838
4939 //腐蚀
5040 byte [ /*cols*/ , /*rows*/ ] ? erodeMask = null ;
@@ -112,6 +102,32 @@ public static void SetSoftEdgeMask(SixLabors.ImageSharp.Image<Rgba32> bitmap, fl
112102 } ) ;
113103 }
114104
105+ /// <summary>
106+ /// 创建Alpha通道蒙层Maps
107+ /// </summary>
108+ private static byte [ , ] CreateSoftEdgeAlphaMask ( Image < Rgba32 > bitmap )
109+ {
110+ var cols = bitmap . Width ;
111+ var rows = bitmap . Height ;
112+
113+ var inputSource = new byte [ cols , rows ] ;
114+ // 创建Alpha通道蒙层Maps
115+ bitmap . ProcessPixelRows ( pixelAccessor
116+ =>
117+ {
118+ for ( var row = 0 ; row < rows ; row ++ )
119+ {
120+ var pixelRow = pixelAccessor . GetRowSpan ( row ) ;
121+ for ( var col = 0 ; col < cols ; col ++ )
122+ {
123+ var pixel = pixelRow [ col ] ;
124+ inputSource [ col , row ] = pixel . A == 0 ? ( byte ) 0 : byte . MaxValue ;
125+ }
126+ }
127+ } ) ;
128+ return inputSource ;
129+ }
130+
115131 /// <summary>
116132 /// 图像腐蚀
117133 /// </summary>
0 commit comments