@@ -347,7 +347,8 @@ internal override void Pnnquan(int[] pixels, ref Color[] palettes, ref int nMaxC
347347
348348 internal override ushort NearestColorIndex ( Color [ ] palette , int pixel , int pos )
349349 {
350- int offset = GetColorIndex ( pixel ) ;
350+ var nMaxColors = palette . Length ;
351+ int offset = nMaxColors > 32 ? pixel : GetColorIndex ( pixel ) ;
351352 if ( nearestMap . TryGetValue ( offset , out var k ) )
352353 return k ;
353354
@@ -358,7 +359,6 @@ internal override ushort NearestColorIndex(Color[] palette, int pixel, int pos)
358359 k = 1 ;
359360
360361 double mindist = 1e100 ;
361- var nMaxColors = palette . Length ;
362362 GetLab ( pixel , out var lab1 ) ;
363363
364364 for ( int i = k ; i < nMaxColors ; ++ i )
@@ -427,14 +427,14 @@ internal override ushort NearestColorIndex(Color[] palette, int pixel, int pos)
427427
428428 internal ushort HybridColorIndex ( Color [ ] palette , int pixel , int pos )
429429 {
430- int offset = GetColorIndex ( pixel ) ;
430+ var nMaxColors = palette . Length ;
431+ int offset = nMaxColors > 32 ? pixel : GetColorIndex ( pixel ) ;
431432 if ( nearestMap . TryGetValue ( offset , out var k ) )
432433 return k ;
433434
434435 var c = Color . FromArgb ( pixel ) ;
435436
436437 double mindist = int . MaxValue ;
437- var nMaxColors = palette . Length ;
438438 GetLab ( pixel , out var lab1 ) ;
439439
440440 for ( int i = k ; i < nMaxColors ; ++ i )
@@ -493,13 +493,13 @@ protected override ushort ClosestColorIndex(Color[] palette, int pixel, int pos)
493493 if ( c . A <= alphaThreshold )
494494 return NearestColorIndex ( palette , pixel , pos ) ;
495495
496- int offset = GetColorIndex ( pixel ) ;
496+ var nMaxColors = palette . Length ;
497+ int offset = nMaxColors > 32 ? pixel : GetColorIndex ( pixel ) ;
497498 if ( ! closestMap . TryGetValue ( offset , out var closest ) )
498499 {
499500 closest = new ushort [ 4 ] ;
500501 closest [ 2 ] = closest [ 3 ] = ushort . MaxValue ;
501502
502- var nMaxColors = palette . Length ;
503503 for ( ushort k = 0 ; k < nMaxColors ; ++ k )
504504 {
505505 var c2 = palette [ k ] ;
0 commit comments