11using DotNetCampus . MediaConverters . Imaging . Effect . Color ;
22
3+ using SixLabors . ImageSharp ;
4+ using SixLabors . ImageSharp . PixelFormats ;
5+ using SixLabors . ImageSharp . Processing ;
6+
37using System ;
48using System . Collections . Generic ;
9+ using System . Diagnostics ;
510using System . Linq ;
11+ using System . Numerics ;
612using System . Runtime . InteropServices ;
713using System . Text ;
814using System . Threading . Tasks ;
9- using SixLabors . ImageSharp ;
10- using SixLabors . ImageSharp . PixelFormats ;
15+ using SixLabors . ImageSharp . Advanced ;
16+ using static System . Net . Mime . MediaTypeNames ;
1117
1218namespace DotNetCampus . MediaConverters . Imaging . Effect . Extensions ;
1319
@@ -22,24 +28,27 @@ internal static class BitmapExtension
2228 /// 将<see cref="Image{Rgba32}"/>逐像素处理
2329 /// </summary>
2430 /// <returns></returns>
25- public static void PerPixelProcess ( this Image < Rgba32 > bitmap , Func < ColorMetadata , ColorMetadata > func )
31+ public static void PerPixelProcess ( this Image < Rgba32 > image , Func < ColorMetadata , ColorMetadata > func )
2632 {
27- bitmap . ProcessPixelRows ( accessor =>
33+ //var stopwatch = new Stopwatch();
34+ //stopwatch.Start();
35+ Parallel . For ( 0 , image . Height , rowIndex =>
2836 {
29- for ( int rowIndex = 0 ; rowIndex < accessor . Height ; rowIndex ++ )
37+ Memory < Rgba32 > rowMemory = image . DangerousGetPixelRowMemory ( rowIndex ) ;
38+
39+ var span = rowMemory . Span ;
40+
41+ for ( int colIndex = 0 ; colIndex < span . Length ; colIndex ++ )
3042 {
31- var span = accessor . GetRowSpan ( rowIndex ) ;
32- for ( int colIndex = 0 ; colIndex < span . Length ; colIndex ++ )
33- {
34- //获取颜色
35- var color = new ColorMetadata ( span [ colIndex ] ) ;
36- //处理颜色
37- var targetColor = func ( color ) ;
38- //保存颜色
39- span [ colIndex ] = targetColor . Color ;
40- }
43+ //获取颜色
44+ var color = new ColorMetadata ( span [ colIndex ] ) ;
45+ //处理颜色
46+ var targetColor = func ( color ) ;
47+ //保存颜色
48+ span [ colIndex ] = targetColor . Color ;
4149 }
4250 } ) ;
51+ //stopwatch.Stop();
4352
4453 //var pixelFormat = bitmap.PixelFormat;
4554
0 commit comments